Kiểm tra khi nhập dữ liệu vào textbox (1 người xem)

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

Người dùng đang xem chủ đề này

thomtv

Thành viên hoạt động
Tham gia
10/5/10
Bài viết
127
Được thích
30
Nhờ các bạn hướng dẫn giùm VD như sau:
Mình có một userform và textbox1, khi nhập liệu vào textbox1 thì kiểm tra là số nhập trong textbox1 nếu nhỏ hơn số của 1 cell được định trước trong sheet thì cho qua, con nếu số nhập liệu trong textbox1 lớn hơn số của 1 cell định trước thì thông báo.
có phải đoạn code như thế này không và dùng sự kiện gì cho textbox?
If Me.TextBox1 < Sheets("abc").Range("b1") Then
Else
If Me.TextBox1 > Sheets("abc").Range("b1") Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
Có ai giúp mình với
 
Lần chỉnh sửa cuối:
Nhờ các bạn hướng dẫn giùm VD như sau:
Mình có một userform và textbox1, khi nhập liệu vào textbox1 thì kiểm tra là số nhập trong textbox1 nếu nhỏ hơn số của 1 cell được định trước trong sheet thì cho qua, con nếu số nhập liệu trong textbox1 lớn hơn số của 1 cell định trước thì thông báo.
có phải đoạn code như thế này không và dùng sự kiện gì cho textbox?
If Me.TextBox1 < Sheets("abc").Range("b1") Then
Else
If Me.TextBox1 > Sheets("abc").Range("b1") Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
Có ai giúp mình với

thử như vậy xem:
Mã:
Private Sub TextBox1_Change()
    If Me.TextBox1 < Sheets("abc").Range("b1") Then
    ...............................................
    ElseIf Me.TextBox1 > Sheets("abc").Range("b1") Then
            MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
    End If
End Sub
 
Upvote 0
Nhờ các bạn hướng dẫn giùm VD như sau:
Mình có một userform và textbox1, khi nhập liệu vào textbox1 thì kiểm tra là số nhập trong textbox1 nếu nhỏ hơn số của 1 cell được định trước trong sheet thì cho qua, con nếu số nhập liệu trong textbox1 lớn hơn số của 1 cell định trước thì thông báo.
có phải đoạn code như thế này không và dùng sự kiện gì cho textbox?
If Me.TextBox1 < Sheets("abc").Range("b1") Then
Else
If Me.TextBox1 > Sheets("abc").Range("b1") Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
Có ai giúp mình với

Bạn nói rằng:
kiểm tra là số nhập trong textbox1 nếu nhỏ hơn số của 1 cell được định trước trong sheet thì cho qua
Thì thì cái If ở trên là thừa rồi. Chỉ cần cái IF bên dưới là đủ
 
Upvote 0
Thường thường thì đúng nhưng không luôn luôn.

Khi so sánh 2 dữ liệu, bạn phải CHẮC CHẮN là chúng loại nào:

- Nếu là số thì 123 lớn hơn 23
- Nếu là chuõi thì "123" nhỏ hơn "23"

Trong code của bạn không đề cập đến loại nên đôi khi sẽ xảy ra trường hợp bất ngờ.
 
Upvote 0
Xin lỗi vì bận việc hôm nay mới xem lại bài.
Dùng sự kiện change cho textbox khi đánh số vào là nó thông báo liền.
Ý mình là muốn khi nhập liệu vào textbox nếu nhập số lớn hơn B1 thì thông báo còn nhỏ hơn thì không thông báo. mình gửi file mẫu bạn xem giúp mình nhé.
Cảm ơn sự quan tâm của các bạn.
 

File đính kèm

Upvote 0
Xin lỗi vì bận việc hôm nay mới xem lại bài.
Dùng sự kiện change cho textbox khi đánh số vào là nó thông báo liền.
Ý mình là muốn khi nhập liệu vào textbox nếu nhập số lớn hơn B1 thì thông báo còn nhỏ hơn thì không thông báo. mình gửi file mẫu bạn xem giúp mình nhé.
Cảm ơn sự quan tâm của các bạn.

Vậy CODE và FORM của bạn đâu?
Đưa file trống không vậy sao?
 
Upvote 0
Có ai xem qua bài và giúp mình với
 
Upvote 0
Trên Form chỉ có duy nhất 1 TextBox thì chả làm được gì đâu
Bạn thông cảm cho, vì cái này mình chỉ đưa Form làm VD thôi. Vì mình muốn tìm hiểu và học về sự kiện và thuộc tính khi sử dụng textbox. nên Form chỉ có 1 textbox.
Mình sử dụng thuộc tính Value cho textbox và value cho cell nhưng vẫn không được.
If Me.TextBox1.Value > Sheets("abc").Range("b1").Value Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y".
Nhờ các bạn hướng dẫn giùm khi sử dụng thuộc tính. mình còn gà với VBA lắm, mong được sự hướng dẫn nhiệt tình của các bạn đã quan tâm.
 
Upvote 0
Bạn thông cảm cho, vì cái này mình chỉ đưa Form làm VD thôi. Vì mình muốn tìm hiểu và học về sự kiện và thuộc tính khi sử dụng textbox. nên Form chỉ có 1 textbox.
Mình sử dụng thuộc tính Value cho textbox và value cho cell nhưng vẫn không được.
If Me.TextBox1.Value > Sheets("abc").Range("b1").Value Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y".
Nhờ các bạn hướng dẫn giùm khi sử dụng thuộc tính. mình còn gà với VBA lắm, mong được sự hướng dẫn nhiệt tình của các bạn đã quan tâm.

Vấn đề không nằm ở chổ dùng thuộc tính gì mà nằm ở chổ dùng sự kiện
Bài này, nếu bạn dùng sự kiện TextBox1_Change thì... quên đi. Chỉ có thể giải quyết nó bằng sự kiện TextBox1_AfterUpdate (tức khi bạn gõ xong, Enter 1 phát để chuyển qua control khác thì code mới có tác dụng)
Cũng vì vấn đề phải Enter để chuyển qua Control khác nên nếu dùng sự kiện TextBox1_AfterUpdate, bắt buộc trên UserForm của bạn phải có ít nhất 2 control trở lên
 
Upvote 0
Vấn đề không nằm ở chổ dùng thuộc tính gì mà nằm ở chổ dùng sự kiện gì
Bài này, nếu bạn dùng sự kiện TextBox1_Change thì... quên đi. Chỉ có thể giải quyết nó bằng sự kiện TextBox1_AfterUpdate (tức khi bạn gõ xong, Enter 1 phát để chuyển qua control khác thì code mới có tác dụng)
Cũng vì vấn đề phải Enter để chuyển qua Control khác nên nếu dùng sự kiện TextBox1_AfterUpdate, bắt buộc trên UserForm của bạn phải có ít nhất 2 control trở lên
Bài này, nếu bạn dùng sự kiện TextBox1_Change thì... quên đi.
bạn có thể giải thích thêm vì sao không thể dùng sự kiện TextBox1_Change .
nhưng đổi thuộc tính Text cho textbox thi nó so sánh dạng chuổi thì được, còn dạng số thì lại ko được. mong được học hỏi thêm.
 
Upvote 0
Bạn thông cảm cho, vì cái này mình chỉ đưa Form làm VD thôi. Vì mình muốn tìm hiểu và học về sự kiện và thuộc tính khi sử dụng textbox. nên Form chỉ có 1 textbox.
Mình sử dụng thuộc tính Value cho textbox và value cho cell nhưng vẫn không được.
If Me.TextBox1.Value > Sheets("abc").Range("b1").Value Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y".
Nhờ các bạn hướng dẫn giùm khi sử dụng thuộc tính. mình còn gà với VBA lắm, mong được sự hướng dẫn nhiệt tình của các bạn đã quan tâm.

Bạn không thể so sánh khi một bên là chuỗi (Textbox) còn bên kia là số được.

Code chính:
Mã:
    If [B][COLOR=#ff0000]CDbl[/COLOR][/B](TextBox1.Text) > Sheets("abc").Range("b1") Then
        MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
    End If

Nếu dữ liệu là những số nguyên thì có thể thay CDbl bằng CLng
------------
Tất nhiên đó chỉ là code chính. Còn phải kiểm tra xem dữ liệu có lỗi không: dữ liệu "trống", dữ liệu không là số vd. "hichic", "25 Đội Cấn"

code ví dụ
Mã:
    If Not IsNumeric(TextBox1.Text) Then
        MsgBox "blala"
    ElseIf CDbl(TextBox1.Text) > Sheets("abc").Range("b1") Then
        MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
    End If

Việc kiểm tra dữ liệu nhập vào không nên làm trong OnChange. Con người có những lúc mệt mỏi, lơ đãng, tay run, muốn gõ 1 mà ngón tay lại trúng 2. Phải cho người ta cơ hội sửa lại. Chứ cứ gõ nhầm lại nhẩy ra cửa sổ thì phiền toái lắn.

Bạn đã từng cài nhiều chương trình lớn, nhập dữ liệu đăng ký vào nhiều trường trên trang web chưa? Người ta chả kiểm tra dữ liệu mỗi lần bạn gõ. Chỉ khi bạn nhấn nút "Next", "Register" thì "người ta " mới kiểm tra và thông báo nếu dữ liệu thiếu hoặc sai.

Vậy bạn cũng chỉ kiểm tra dữ liệu ở khâu cuối nào đó. Sẽ có nút "Tính toán" (cmdCalculate) sau khi nhập dữ liệu vào các textbox? Thì kiểm tra trong cmdCalculate_Click. Dữ liệu sẽ được "đập" xuống sheet khi nhấn ABC sau khi nhập liệu? Thì kiểm tra dữ liệu trong ABC_Click.

Nói ngắn gọn thì phải chọn một khâu nào đó thích hợp ở về sau. Thế thôi.

Tôi nhắc lại: Nếu bạn có 10, 15 textbox mà bạn kiểm tra từng textbox là không nên. Đến khi nhấn "Next", Register", cmdCalculate_Click, ABC_Click thì mới kiểm tra 10, 15 textbox đó.
 
Upvote 0
Còn phải kiểm tra xem dữ liệu có lỗi không: dữ liệu "trống" đã viết:
If Not IsNumeric(TextBox1.Text) Then
MsgBox "blala"
ElseIf CDbl(TextBox1.Text) > Sheets("abc").Range("b1") Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
End If
Mình đã thử đoạn code với trường hợp điền dữ liệu rồi sau đó xóa đi thì nó hiểu là dữ liệu "trống" nên sẻ thông báo lỗi.
Vậy bỏ qua khi dữ liệu "Trống" thì code như thế nào.
 

File đính kèm

Upvote 0
Mình đã thử đoạn code với trường hợp điền dữ liệu rồi sau đó xóa đi thì nó hiểu là dữ liệu "trống" nên sẻ thông báo lỗi.

Xóa nội dung trong textbox thì có nghĩa là nó "trống".

Vậy bỏ qua khi dữ liệu "Trống" thì code như thế nào.

Tôi không hiểu bạn định làm gì mà "lờ" trường hợp "trống". Nhưng muốn thì được thôi.

Nếu thế thì theo lôgíc trước hết ta phải kiểm tra xem textbox có ký tự nào không. Nếu có thì mới "cử thanh tra đi kiểm tra", tức mới thực hiện code hiện thời

Mã:
If Len(TextBox1.Text) Then
 ... code hiện thời
End If
 
Upvote 0
Xóa nội dung trong textbox thì có nghĩa là nó "trống".

Tôi không hiểu bạn định làm gì mà "lờ" trường hợp "trống". Nhưng muốn thì được thôi.

Nếu thế thì theo lôgíc trước hết ta phải kiểm tra xem textbox có ký tự nào không. Nếu có thì mới "cử thanh tra đi kiểm tra", tức mới thực hiện code hiện thời

Mã:
If Len(TextBox1.Text) Then
 ... code hiện thời
End If
Mình dùng sự kiện Change vẫn thực hiện được, chỉ được nhập số nguyên. khi nhập sai xóa đi cũng ko bị báo dữ liệu "Trống", ko cần dùng đến hàm Len và hàm Number.
Nhưng nhập số thập phân thì mình chưa biết làm như thế nào. có ai cho ý kiến giúp mình.
Xin cảm ơn.

Private Sub TextBox1_Change()
Sheets("abc").Select
Me.TextBox1.Text = Val(TextBox1.Text)
If CLng(TextBox1.Text) > Sheets("abc").Range("b1") Then
MsgBox " kiem tra lai so lieu cua textbox", , "Chu y"
End If
End Sub
 

File đính kèm

Upvote 0

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

Back
Top Bottom