Option Explicit
Sub KiemTraNhap()
Dim Rng As Range, Cls As Range
Set Cls = Range("B1:B2")
Set Rng = Union(Cls, Cls.Offset(2, 1), Cls.Offset(4, 2), Cls.Offset(2, 4))
For Each Cls In Rng
If Cls.Value = "" Then
MsgBox Cls.Address & " Càn Duoc Nhap Du Lieu!": Exit Sub
End If
Next Cls
End Sub
Bạn bỏ code đó vào sự kiện Workbook_BeforeSave và Workbook_BeforePrint là đượcý Của Mình Là Nếu Nhập Liệu Không Đầy Đủ Thì Khi Bấm Để In Hay Save Sẽ Báo Lỗi
ý Của Mình Là Nếu Nhập Liệu Không Đầy Đủ Thì Khi Bấm Để In Hay Save Sẽ Báo Lỗi
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
Option Explicit
Sub KiemTraNhap()
Dim Rng As Range, Cls As Range, Sh As Worksheet '<=|'
Set Sh = Sheets("Print") '<=|'
Set Cls = Sh.Range("B1:B2") '<=|'
Set Rng = Union(Cls, Cls.Offset(2, 1), Cls.Offset(4, 2), Cls.Offset(2, 4))
For Each Cls In Rng
If Cls.Value = "" Then
MsgBox Cls.Address & " Càn Duoc Nhap Du Lieu!": Exit Sub
End If
Next Cls
End Sub
Nếu tui muốn thay đổi vùng bãy lỗi thì phải sửa những chỗ nào, mong các bác giải thích giùm em.PHP:Option Explicit Sub KiemTraNhap() Dim Rng As Range, Cls As Range, Sh As Worksheet '<=|' Set Sh = Sheets("Print") '<=|' Set Cls = Sh.Range("B1:B2") '<=|' Set Rng = Union(Cls, Cls.Offset(2, 1), Cls.Offset(4, 2), Cls.Offset(2, 4)) For Each Cls In Rng If Cls.Value = "" Then MsgBox Cls.Address & " Càn Duoc Nhap Du Lieu!": Exit Sub End If Next Cls End Sub
Nếu đặt bẫy ở những vùng khác thì fải hỏi thấy Thổ địa; Đó là fương thức Union() ; Ví dụ nên đọc tại: http://www.giaiphapexcel.com/forum/showthread.php?480-Bước-đầu-về-phương-thức-IntersectNếu tui muốn thay đổi vùng bãy lỗi thì phải sửa những chỗ nào, mong các bác giải thích giùm em.
ví dụ không phải vùng b1:b2; c3:c4 ... mà là những vùng khác như : A3:A7 hoặc D812 ..
Option Explicit
Sub KiemTraNhap()
Dim Rng As Range, Cls As Range, Sh As Worksheet
Set Sh = Sheets("Print") ' *'
Set Cls = Sh.Range("A3:A7") '<=|'
Set Cls = Union(Cls, "D8:D12")
Set Rng = Union(Cls, MyRange ) '. . . Bạn có thể thêm tiếp vô đây '
For Each Cls In Rng
If Cls.Value = "" Then
MsgBox Cls.Address & " Càn Duoc Nhap Du Lieu!": Exit Sub
End If
Next Cls
End Sub
Vẫn Không Được Các Bạn ơi,Mình Chỉ Cần Có Bẫy Sheet PrintTrong ô: A43,I43,M43,A45,I45,M45,A47,I47,M47,A49,I49,M49,A51,I51,A53,I53,M53,A55,E56,E61,C73,N73,C75
Sub KiemTraNhapLieu()
Dim MyStr As String
Dim Rng As Range
MyStr = "A43,I43,M43,A45,I45,M45,A47,I47,M47,A49,I49,M49,A51,I51,A53,I53,M53,A55,E56,E61,C73,N73,C75"
Set Rng = Range(MyStr)
If Application.CountA(Rng) <> Rng.Cells.Count Then
MsgBox "Vui long nhap lieu day du !"
Exit Sub
End If
End Sub
Bạn dùng code sau thử nhé
Mã:Sub KiemTraNhapLieu() Dim MyStr As String Dim Rng As Range MyStr = "A43,I43,M43,A45,I45,M45,A47,I47,M47,A49,I49,M49,A51,I51,A53,I53,M53,A55,E56,E61,C73,N73,C75" Set Rng = Range(MyStr) If Application.CountA(Rng) <> Rng.Cells.Count Then MsgBox "Vui long nhap lieu day du !" Exit Sub End If End Sub
Mình thử bình thường mà, nếu không nhập đầy đủ phần tô vàng thì báo lổi, bạn xem file nhé.Bó Tay, Nó Vẫn Bẫy Lỗi Tất Cả Các Sheet
Mình thử bình thường mà, nếu không nhập đầy đủ phần tô vàng thì báo lổi, bạn xem file nhé.
Thì ở trên đã gợi ý cho bạn là call macro ở sự kiện Workbook_BeforePrint và Workbook_BeforeSave rồi còn gì. Nếu chưa nhập liệu đủ thì hủy lệnh.Mình Làm Được Rồi, Nhưng Mà Chưa Được Như ý,ý Của Mình Là Nếu Nhập Liệu Không Đầy Đủ Thì Khi Bấm Để In Hay Save Sẽ Báo Lỗi