vonguyen3745
Thành viên hoạt động
- Tham gia
- 18/7/09
- Bài viết
- 145
- Được thích
- 5
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Cll As Range
For Each Cll In Application.Union(Sheet1.[d6:f21], Sheet1.[h5:i16])
If Cll = "" Then
Cancel = True
MsgBox "Chua nhap du thong tin"
Cll.Select
Exit Sub
End If
Next
End Sub
Bạn có thể sửa Sub ở trên như sau:Nếu làm như bạn thì khi chưa nhập xong dữ liệu nó không cho save, như thế cũng không ổn vì một báo cáo người ta có thể làm trong vài ngày mà không cho save thì nguy hiểm, ý của mình là khi save nó chỉ cảnh báo là chưa nhập đủ dữ liệu ở ô nào đó thôi nhưng vẫn cho save bình thường. Mong bạn giúp đỡ thêm
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Cll As Range, TB
For Each Cll In Sheet1.[D6:F21,H5:I16]
If Cll = "" Then
TB = MsgBox("Chua nhap du thong tin. Ban thuc su muon Save?", vbYesNo, "Canh bao")
Cancel = TB = vbNo
Cll.Select
Exit Sub
End If
Next
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Cll As Range, tb, qd, k
For Each Cll In Application.Union(Sheet1.[d6:f21], Sheet1.[h5:i16])
If Cll = "" Then tb = tb & Cll.Address & ";" & IIf(k = 5, Chr(10), "")
k = k + 1
If k = 6 Then k = 1
Next
tb = "CAC O SAU DAY CHUA DU THONG TIN:" & Chr(10) & Chr(10) & tb
tb = tb & Chr(10) & Chr(10) & "LUU LAI CHON YES, SUA XONG MOI LUU CHON NO ?"
qd = MsgBox(tb, vbYesNo, "GPE")
If qd = 7 Then Cancel = True
End Sub
Thực chất đây là 2 phương thức rất khác nhau:To Sealand: Giữa 2 cách viết: Application.Union(Sheet1.[d6:f21], Sheet1.[h5:i16]) và Sheet1.[D6:F21,H5:I16] có khác nhau không vậy bác? Em thấy cách viết sau ngắn gọn hơn nhưng không biết dùng nó có ổn không. Trong file đính kèm của bạn vonguyen3745 thì không sao, còn trong trường hợp khác thì...