Xin giúp đỡ Tự động check dữ liệu tồn tại hay không?

Liên hệ QC

namdajka97x

Thành viên mới
Tham gia
16/9/19
Bài viết
12
Được thích
5
Ace giúp em với ạ.
em có dữ liệu có sẵn sheet1
Cột A1:A5 lần lượt với mã nhân viên
Sv001 đến sv005
Em muốn sheet2
Cột A
Nhập dữ liệu mà không có trong sheet1 sẽ tư động báo msgbox “ Ma sv này không có “
 
Ace giúp em với ạ.
em có dữ liệu có sẵn sheet1
Cột A1:A5 lần lượt với mã nhân viên
Sv001 đến sv005
Em muốn sheet2
Cột A
Nhập dữ liệu mà không có trong sheet1 sẽ tư động báo msgbox “ Ma sv này không có “
Bạn thử nhé.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng As Range, srng As Range
      Application.EnableEvents = False
      If Target.Column = 1 Then
         Set rng = Sheets("sheet1").Range("A1:A5")
         Set srng = rng.Find(Target.Value, , xlFormulas, xlWhole)
         If srng Is Nothing Then
            MsgBox "Ma sv khong co"
            Target.Value = Empty
         End If
      End If
     Application.EnableEvents = True
End Sub
 
Upvote 0
Trời đất hỡi. Cái này Excel nó cho sẵn rồi "Data Validation"
Lập trình với lập trẹt.
 
Upvote 0
Trời đất hỡi. Cái này Excel nó cho sẵn rồi "Data Validation"
Lập trình với lập trẹt.
làm biến trả lời tầm bậy nữa. Thế họ copy ở ngoài họ dán vô thì sao, hoặc gõ 1 từ tại ô A1 sau đó họ bôi đen từ A1 xuống A5 rồi nhấn Ctrl +D để cho nó Fill xuống thì "Data Validation" cũng bó tay
Bài đã được tự động gộp:

Ace giúp em với ạ.
em có dữ liệu có sẵn sheet1
Cột A1:A5 lần lượt với mã nhân viên
Sv001 đến sv005
Em muốn sheet2
Cột A
Nhập dữ liệu mà không có trong sheet1 sẽ tư động báo msgbox “ Ma sv này không có “
thế nếu copy paste, hoặc họ gõ 1 từ tại A1 sau đó bôi đen A1:A5 nhấn Ctrl + D thì có hiện thông báo không em
Bài đã được tự động gộp:

Bạn thử nhé.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng As Range, srng As Range
      Application.EnableEvents = False
      If Target.Column = 1 Then
         Set rng = Sheets("sheet1").Range("A1:A5")
         Set srng = rng.Find(Target.Value, , xlFormulas, xlWhole)
         If srng Is Nothing Then
            MsgBox "Ma sv khong co"
            Target.Value = Empty
         End If
      End If
     Application.EnableEvents = True
End Sub
họ copy vào passte vào thì sao a
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử nhé.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng As Range, srng As Range
      Application.EnableEvents = False
      If Target.Column = 1 Then
         Set rng = Sheets("sheet1").Range("A1:A5")
         Set srng = rng.Find(Target.Value, , xlFormulas, xlWhole)
         If srng Is Nothing Then
            MsgBox "Ma sv khong co"
            Target.Value = Empty
         End If
      End If
     Application.EnableEvents = True
End Sub
Theo thông lệ của dân chuyên nghiệp, bạn cũng nên giải thích cho người dùng biết mình nhập cái gì mà không có. Empty mất đất rồi người ta lấy gì check.
If srng Is Nothing Then
MsgBox "Ma sv: " & Target. Value & " khong co"
Target.Value = Empty
End If

Loại event này hơi nguy hiểm. Nếu người ta không phải chỉ gõ vào ô trống mà là chỉnh sửa ô đã có dữ liệu thì dữ liệu trước đây sẽ bị mất, khong ctrl+z được
 
Upvote 0
Theo thông lệ của dân chuyên nghiệp, bạn cũng nên giải thích cho người dùng biết mình nhập cái gì mà không có. Empty mất đất rồi người ta lấy gì check.
If srng Is Nothing Then
MsgBox "Ma sv: " & Target. Value & " khong co"
Target.Value = Empty
End If
làm biến trả lời tầm bậy nữa. Thế họ copy ở ngoài họ dán vô thì sao, hoặc gõ 1 từ tại ô A1 sau đó họ bôi đen từ A1 xuống A5 rồi nhấn Ctrl +D để cho nó Fill xuống thì "Data Validation" cũng bó tay . Vui lòng cho tôi xem phương án FiX lổi này triệt để 100% ( Lúc trước có nghe nói làm Manager Projet code c++ mà ) thử trổ tài nghe thử đúng không @VetMini
 
Upvote 0
Validation chỉ hỗ trợ nhập trực tiếp còn copy kéo hay crtl D không đc ạ
Trong yêu cầu dưới đây. Bạn chỉ giùm tôi chỗ "copy kéo" hay "ctrl D".
Nếu do mắt mờ kém thì tôi sẵn sàng xin lỗi bạn.

Yêu cầu mà thực sự ra chẳng biết mình yêu cầu gì. Nếu Ctrl+D 100 ô thì chả lẽ cái msgbox có khả năng hiện lên 100 lần?

Ace giúp em với ạ.
em có dữ liệu có sẵn sheet1
Cột A1:A5 lần lượt với mã nhân viên
Sv001 đến sv005
Em muốn sheet2
Cột A
Nhập dữ liệu mà không có trong sheet1 sẽ tư động báo msgbox “ Ma sv này không có “
 
Upvote 0
Trong yêu cầu dưới đây. Bạn chỉ giùm tôi chỗ "copy kéo" hay "ctrl D".
Nếu do mắt mờ kém thì tôi sẵn sàng xin lỗi bạn.

Yêu cầu mà thực sự ra chẳng biết mình yêu cầu gì. Nếu Ctrl+D 100 ô thì chả lẽ cái msgbox có khả năng hiện lên 100 lần?
https://streamable.com/xgapya
Đây là video ạ nêu nhập tay trc tiếp sẽ báo còn copy vào sẽ ko hiện lỗi .
 
Upvote 0

File đính kèm

  • Canh bao.xlsb
    18 KB · Đọc: 9
Upvote 0
File bị lỗi rồi
 
Upvote 0
Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, srng As Rang
Bạn thử nhé.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng As Range, srng As Range
      Application.EnableEvents = False
      If Target.Column = 1 Then
         Set rng = Sheets("sheet1").Range("A1:A5")
         Set srng = rng.Find(Target.Value, , xlFormulas, xlWhole)
         If srng Is Nothing Then
            MsgBox "Ma sv khong co"
            Target.Value = Empty
         End If
      End If
     Application.EnableEvents = True
End Sub
bác ơi, đối với trường hợp dùng hàm lấy dữ liệu từ 1 cột khác hay sheet khác thì code này không hoạt động ạ.
 
Upvote 0
Bạn thử nhé.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng As Range, srng As Range
      Application.EnableEvents = False
      If Target.Column = 1 Then
         Set rng = Sheets("sheet1").Range("A1:A5")
         Set srng = rng.Find(Target.Value, , xlFormulas, xlWhole)
         If srng Is Nothing Then
            MsgBox "Ma sv khong co"
            Target.Value = Empty
         End If
      End If
     Application.EnableEvents = True
End Sub
Giúp e với bác
 
Upvote 0
Web KT
Back
Top Bottom