Code Bẫy Lỗi Để Trống Dữ Liệu Trong Các ô Không Liên Tiếp

  • Thread starter Thread starter khamha
  • Ngày gửi Ngày gửi
Liên hệ QC

khamha

Không có việc gì khó...
Tham gia
4/6/10
Bài viết
662
Được thích
846
Nghề nghiệp
CNVC Laos
m Phiền Các Bạn Giúp Mình Tạo Code Bẫy Lỗi Để Trống Dữ Liệu Trong Các ô Không Liên Tiếp. Cảm ơn Các Bạn…
 

File đính kèm

Xài thử cái ni coi sao:

PHP:
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
 
Upvote 0
Có thể bạn gán thêm nút lệnh vào, hoặc đưa đoạn code của anh ChanhTQ vào worksheet gán cho nó sự kiện để kiểm tra trong file này tui thử gán sự kiện rightclick cho bạn thử kiểm tra, đâu coi đúng ý bạn không
 

File đính kèm

Upvote 0
ý 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
 
Upvote 0
Sao cái í này bạn không đưa ngay từ bài đầu, tệ quá đi mất?!

ý 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

Ai mà biết bạn ngứa chổ nào mà gãi!

Hãy đưa nó vô 1 nút lệnh; Trước khi in thì bấm kiểm tra;

& từ CS VBE ta vô ngăn ThisWorkBook & gọi macro đó từ

PHP:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub
 
Upvote 0
View attachment Print.xlsKhông Được Các Bạn ơi Nó Bẫy Lỗi Để Trống Dữ Liệu Trong Tất Cả Các Sheet,Mà Mình Chỉ Cần Có

Bẫy Sheet Print Thôi, Các Bạn Giúp Mình Với.
 
Upvote 0
Bạn thử với macro này xem:

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
 
Upvote 0
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 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 D8:D12 ..
 
Upvote 0
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.
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 D8:D12 ..
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-Intersect

Cụ thể hơn:
PHP:
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
 
Lần chỉnh sửa cuối:
Upvote 0
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
 
Upvote 0
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

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
 
Upvote 0
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

Bó Tay, Nó Vẫn Bẫy Lỗi Tất Cả Các Sheet
 
Upvote 0

File đính kèm

Upvote 0
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é.

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
 
Upvote 0
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
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.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom