Hỏi về khai báo điều kiện cho TextBox

Liên hệ QC

tq_thuyet

Thành viên mới
Tham gia
29/11/08
Bài viết
44
Được thích
4
Nghề nghiệp
Engineer
Em có một UserForm trong đó có một TextBox1.
Em muốn tạo code để khi giá trị nhập vào từ TextBox không trùng với những giá trị có trong các cell từ A1:A10 của Sheet"Sum" thì báo MsgBox"...".

Nếu chỉ so sánh với 1 giá trị trong 1 cell(1,1)thì em làm được nhưng so sánh với một danh sách(A1:A10 ) thì em chưa biết cách khai báo
Vd:
If Val(TextBox1.Value) <> Sheets("sum").Cells(1, 1).Value Then
MsgBox "Khong co gia tri " & TextBox1.Value"
Else
End If
Mong các anh chị chỉ giáo.
 
Bạn dùng 1 biến chạy i, dùng vòng lặp for cho i chạy từ 1 đến 10, khi đó điều kiện là: Sheets("sum").Cells(i,1).Value. Dùng thêm 1 biến đếm K, khi If Val(TextBox1.Value) = Sheets("sum").Cells(i,1).Value then k=k+1, và cho thoát vòng lặp Exit For
Hết vòng lặp kiểm tra điều kiện if k=0 then msgbox.....
Có thể có giải pháp hay hơn, vì vòng lặp For chạy chậm nếu dữ liệu so sánh hàng nghìn dòng.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn đã quan tâm.
Tiện đây cho mình hỏi tại sao code sau không thực hiện được vậy?
If Val(TextBox1.Value) <> Sheets("sum").Range("A1:A10").Value Then
MsgBox "Khong co gia tri " & TextBox1.Value"
Else
End If
 
Upvote 0
Cảm ơn bạn đã quan tâm.
Tiện đây cho mình hỏi tại sao code sau không thực hiện được vậy?
If Val(TextBox1.Value) <> Sheets("sum").Range("A1:A10").Value Then
MsgBox "Khong co gia tri " & TextBox1.Value"
Else
End If
Sao mà so sánh kiểu vậy được chứ ---> Một giá trị so với 1 mảng, bạn nghĩ nó cho kết quả gì?
Ít ra cũng phải dùng COUNTIF ---> Hàm này chắc không lạ với bạn chứ?
 
Upvote 0
Mình mới tập tành nên chưa biết gì cả.
Cảm ơn Pro đã chỉ giáo!
 
Upvote 0
Đây là code kiểm tra nếu không có trong danh sách phải nhập lại:

Mã:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox "=countif(Sheet1!A2:A100,""" & Me.TextBox1 & """)"
If Me.TextBox1 <> "" And _
Evaluate("=countif(Sum!A2:A100,""" & Me.TextBox1 & """)") = 0 Then
MsgBox "Chua co ma nay : " & Me.TextBox1
Cancel = True
Me.TextBox1 = ""
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Đây là code kiểm tra nếu không có trong danh sách phải nhập lại:

Mã:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox "=countif(Sheet1!A2:A100,""" & Me.TextBox1 & """)"
If Me.TextBox1 <> "" And _
Evaluate("=countif(Sum!A2:A100,""" & Me.TextBox1 & """)") = 0 Then
MsgBox "Chua co ma nay : " & Me.TextBox1
Cancel = True
Me.TextBox1 = ""
End If
End Sub
Dùng cái này thay cho Evaluate cũng được nè anh: WorksheetFunction.Countif(Sheets("Sum").[A2:A100],TextBox1)
 
Upvote 0
Hì, nó là 1 mà. Đỡ phải tham chiếu tới thu viện hàm Exc nên dùng Evaluate thôi
 
Upvote 0
Web KT

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

Back
Top Bottom