minhkhoi9492
Thành viên mới

- Tham gia
- 6/7/15
- Bài viết
- 9
- Được thích
- 0
Gặp số thứ hai 0 hoặc gần 0 là cơ-rát liền.PHP:Private Sub TextBox2_Change() Me!lblKQ.Caption = Format(Me!TextBox1.Value / Me!TextBox2, "###.000") End Sub
Xử lí lỗi đó sao vậy bác ?Gặp số thứ hai 0 hoặc gần 0 là cơ-rát liền.
Nếu mà bất lực vậy còn chưa kể còn tính toán vs số âm nữa chắc càng bất lực hơn hả bác . Em nghĩ mãi mà chưa giải quyết đượcChưa nói tới chia cho 0 hay nhập chữ. Tôi muốn chia vd. 12 cho 0.3 (0,3) thì không thể gõ được 0.3
Nói chung nếu muốn chia cho số < 1 thì không gõ được số bị chia. Bất lực.![]()
Thực ra những bài của lớp 1 tôi học quá lâu rồi nên không nhớ hết.Nếu mà bất lực vậy còn chưa kể còn tính toán vs số âm nữa chắc càng bất lực hơn hả bác . Em nghĩ mãi mà chưa giải quyết được
Option Explicit
Private Sub chia(ByVal tb1 As MSForms.TextBox, ByVal tb2 As MSForms.TextBox, ByVal lb As MSForms.Label)
If Not IsNumeric(tb1.Value) Then
lb.Caption = "Loi so chia"
ElseIf Not IsNumeric(tb2.Value) Or tb2.Value = 0 Then
lb.Caption = "Loi so bi chia"
Else
lb.Caption = tb1.Value / tb2.Value
End If
End Sub
' vi du gan ket qua xuong sheet
Private Sub CommandButton1_Click()
Sheet1.Range("A1").Value = CDbl(Label4.Caption)
End Sub
Private Sub TextBox1_Change()
chia TextBox1, TextBox2, Label4
End Sub
Private Sub TextBox2_Change()
chia TextBox1, TextBox2, Label4
End Sub
Thanks bác . Em chạy thử thấy ok rồi mà em muốn hỏi thêm là giờ có cách nào để chương trình nó biết mình nhập sai số nào nó hiện thông báo lên cho mình biết không bác ?Thực ra những bài của lớp 1 tôi học quá lâu rồi nên không nhớ hết.
Đại loại là thế này.
Truyền tham số chẳng qua để dễ tùy biến thôi. Nếu tôi viết sub chia không có tham số mà dùng TextBox1, TextBox2 và Label4 trong code của sub chia nhưng vd. bạn có thêm TextBox3, TextBox4 và cũng chia TextBox3 / TextBox4 thì có phải rách việc, có phải méo mặt không. Tóm lại sub chia dùng cho nhiều "cặp chia".
Mã:Option Explicit Private Sub chia(ByVal tb1 As MSForms.TextBox, ByVal tb2 As MSForms.TextBox, ByVal lb As MSForms.Label) If Not IsNumeric(tb1.Value) Then lb.Caption = "Loi so chia" ElseIf Not IsNumeric(tb2.Value) Or tb2.Value = 0 Then lb.Caption = "Loi so bi chia" Else lb.Caption = tb1.Value / tb2.Value End If End Sub ' vi du gan ket qua xuong sheet Private Sub CommandButton1_Click() Sheet1.Range("A1").Value = CDbl(Label4.Caption) End Sub Private Sub TextBox1_Change() chia TextBox1, TextBox2, Label4 End Sub Private Sub TextBox2_Change() chia TextBox1, TextBox2, Label4 End Sub
Code này nó hiển thị ở chỗ label rồi bác .Ý em là mình đánh sai vào là có hộp thoại hiện lên báo sai chỗ nào luôn cho mình ấy ạBạn lòng cái này vào sự kiện textbox change
Mã:If Not IsNumeric(tb1.Value) Then lb.Caption = "khong phai so"
Cháu tìm trong diễn đàn sự kiện key up...... Mà vận dụng nhé. Mắt bác kém tay bác run quá không kiếm giùm cháu đượcCode này nó hiển thị ở chỗ label rồi bác .Ý em là mình đánh sai vào là có hộp thoại hiện lên báo sai chỗ nào luôn cho mình ấy ạ
Cảm ơn bác nhiều . Để em kiếm tài liệu tham khảo thêmCháu tìm trong diễn đàn sự kiện key up...... Mà vận dụng nhé. Mắt bác kém tay bác run quá không kiếm giùm cháu được![]()
Private Sub chia(ByVal tb1 As MSForms.TextBox, ByVal tb2 As MSForms.TextBox, ByVal lb As MSForms.Label)
If Not IsNumeric(tb1.Value) Then
lb.Caption = "Loi so chia"
MsgBox ("Nhap lai so chia")
tb1 = ""
ElseIf Not IsNumeric(tb2.Value) Or tb2.Value = 0 Then
lb.Caption = "Loi so bi chia"
Else
lb.Caption = tb1.Value / tb2.Value
End If
End Sub
Làm sao để nó chỉ hiện thông báo 1 lần cho mình vậy bác ?Tb1.value va tb2.value không phải là số thì nó hiện 2 msgbox là đúng rồi.
Em đang kiếm đây bác . Em mò trên diễn đàn mà chưa kiếm ra bác ạ. Cảm ơn bác nhiềuIf tb1 number or tb2 num ber then thông báo
hihih làm chơi thôi chứ ban tìm kiếm trong diễn đàn đi.... Mình khong co ngồi trên máy tính![]()
Mục đích bạn gọi MsgBox để làm gì? Thứ nhất bạn đã có thông báo ở Label là "Lỗi số chia", tức lỗi ở TextBox1. Thứ nữa là lỗi chỉ xuất hiện tại TextBox mà bạn đang nhập liệu, tức tại TextBox1. Vậy thì thêm cái thông báo "Nhap lai so chia" để làm gì? Có lỗi thì phải nhập lại, sao phải khuyên nhủ làm gì. Nếu ai cứng đầu không nhập lại thì đó là chuyện của người ta. Người ta không nhập lại có nghĩa là người ta cố tình, bắt tù người ta sao?Sao code này em chạy mà bị lỗi nó hiện cái msgbox đến 2 lần liên tục vậy mấy bác ?Mã:Private Sub chia(ByVal tb1 As MSForms.TextBox, ByVal tb2 As MSForms.TextBox, ByVal lb As MSForms.Label) If Not IsNumeric(tb1.Value) Then lb.Caption = "Loi so chia" MsgBox ("Nhap lai so chia") tb1 = "" ElseIf Not IsNumeric(tb2.Value) Or tb2.Value = 0 Then lb.Caption = "Loi so bi chia" Else lb.Caption = tb1.Value / tb2.Value End If End Sub
chia TextBox1, TextBox2, Label4
Private Sub chia(ByVal tb1 As MSForms.TextBox, ByVal tb2 As MSForms.TextBox, ByVal lb As MSForms.Label)
If Not IsNumeric(tb1.Value) Then
lb.Caption = "Loi so chia"
tb1.Value = Empty
ElseIf Not IsNumeric(tb2.Value) Or tb2.Value = 0 Then
lb.Caption = "Loi so bi chia"
tb2.Value = Empty
Else
lb.Caption = tb1.Value / tb2.Value
End If
End Sub