Bạn không phải làm gì cả, vì biểu mẫu con được lưu ngay sau khi mất tiêu điểm (khi điều khiển tab thay đổi).
Nhưng khi tập thể dục, tôi đã vạch ra mã bạn muốn viết nếu cần.
Bạn có thể lưu bất kỳ biểu mẫu nào bằng cách đặt biểu mẫu .Dirty property thành False. Đối với một cái gì đó như thế này mà sẽ chạy rất nhiều, tôi nghĩ rằng tôi muốn viết một phụ để đi qua các subforms, kiểm tra nếu có bẩn, và lưu những người bẩn. Một cái gì đó như thế này:
Public Sub SaveSubFormsOnTab()
Dim pge As Control
Dim ctl As Control
For Each pge In Me!ctlTab.Pages
Debug.Print pge.Name
For Each ctl In pge.Controls
If ctl.ControlType = acSubform Then
If ctl.Form.Dirty Then
ctl.Form.Dirty = False
End If
Debug.Print ctl.Name
End If
Next ctl
Next pge
Set ctl = Nothing
Set pge = Nothing
End Sub
Bây giờ, điều đó thực sự không hiệu quả trong trường hợp bạn có nhiều điều khiển trên điều khiển tab không phải là biểu mẫu con. Nếu tab của bạn không có gì ngoài các biểu mẫu con, nó sẽ khá hiệu quả. Trong cả hai trường hợp, việc sử dụng bộ sưu tập tùy chỉnh được thêm vào trong sự kiện OnLoad của biểu mẫu hiệu quả hơn nhiều, và sau đó bạn sẽ đi bộ sưu tập đó bao gồm không có gì ngoài biểu mẫu con của điều khiển tab và lưu bất kỳ tệp nào bị bẩn.
Một trong hai cách này thích hợp hơn khi sử dụng sự kiện OnChange của tab, vì mỗi khi bạn thêm trang tab có biểu mẫu phụ hoặc thay đổi tên của điều khiển biểu mẫu con, bạn phải thay đổi sự kiện OnChange.
Nguồn
2010-04-14 01:04:20
Tôi đã tìm ra giải pháp. Tôi cần chạy một số mã để cập nhật các trường khác khi dữ liệu nhất định được thay đổi. Những gì đã xảy ra là điều này đã không bắn khi nó được cho là ... Cảm ơn cho đầu vào! – Icode4food
Cho rằng bạn có thể xem xét các sự kiện LostFocus của các điều khiển biểu mẫu con. –