Xin trợ giúp code VBA hàm if else và for...

Liên hệ QC

GACON_VBA

Thành viên chính thức
Tham gia
30/7/16
Bài viết
79
Được thích
1
Chào các bác. Em đang tự nghiên cứu VBA nhưng chưa rành, mong các bác chỉ bảo cho em vấn đề này với
File sau có dữ liệu và vài code VBA em tự lập,
Em muốn là VBA sẽ sử dụng RWS1 (dòng cuối chứa dữ liệu của cột B) để dò xem đã nhập hết các ô số lượng chưa, nếu chưa nhập hoặc =0, hoặc ký tự khác số thì yêu cầu nhập vào MsgBox "Hay nhap DU SO LUONG thuoc". Nếu đã nhập đầy đủ thì "Da hoan thanh"
Xin cảm ơn!
 

File đính kèm

Em muốn là VBA sẽ sử dụng RwrB (dòng cuối chứa dữ liệu của cột B) để dò xem đã nhập hết các ô số lượng chưa, nếu (1) chưa nhập hoặc =0, hoặc (2) ký tự khác số thì yêu cầu nhập vào MsgBox "Hay nhâp DU SÔ LUONG thuôc". Nếu đã nhập đầy đủ thì "Da Hoàn thành"
Chuyện đầu tiên là xác định dòng cuối của cột 'B' chứa dữ liệu
Ta có thể xài câu lệnh (theo file của bạn)
[B2].End(xlDown).Row Hay [B65500].End(xlUp).Row
Sau đó ta tiến hành dò vùng từ ô [B2] đến Cells(RwrB,"B") để kiểm xem ô bên phải liền kể có nhập số liệu hay chưa.
. . . . .
 
Upvote 0
Chuyện đầu tiên là xác định dòng cuối của cột 'B' chứa dữ liệu
Ta có thể xài câu lệnh (theo file của bạn)
[B2].End(xlDown).Row Hay [B65500].End(xlUp).Row
Sau đó ta tiến hành dò vùng từ ô [B2] đến Cells(RwrB,"B") để kiểm xem ô bên phải liền kể có nhập số liệu hay chưa.
. . . . .
Hi. Bác có thể viết code giùm em với được không?
 
Upvote 0
Hi. Bác có thể viết code giùm em với được không?
Bạn thử code này xem được không ạ:
Mã:
Sub Button17_Click()
    Dim Rws1 As Long
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then Exit Sub
        If Application.CountA(.Range("D2:D" & Rws1)) = Application.CountA(.Range("B2:B" & Rws1)) Then
            MsgBox "Hay nhap du lieu don thuoc"
            .Range("B" & Rws1 + 1).Select
        Else
            MsgBox "Hay nhap DU SO LUONG thuoc"
        End If
    End With
End Sub
 
Upvote 0
Bạn thử code này xem được không ạ:
Mã:
Sub Button17_Click()
    Dim Rws1 As Long
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then Exit Sub
        If Application.CountA(.Range("D2:D" & Rws1)) = Application.CountA(.Range("B2:B" & Rws1)) Then
            MsgBox "Hay nhap du lieu don thuoc"
            .Range("B" & Rws1 + 1).Select
        Else
            MsgBox "Hay nhap DU SO LUONG thuoc"
        End If
    End With
End Sub
Cảm ơn bác đã quan tâm trợ giúp. Code này gần đúng rồi. Còn trường hợp nhập vào không phải là số, hoặc bằng =0 nửa. Bác có thể bổ sung em với không?
 
Upvote 0
Cảm ơn bác đã quan tâm trợ giúp. Code này gần đúng rồi. Còn trường hợp nhập vào không phải là số, hoặc bằng =0 nửa. Bác có thể bổ sung em với không?

Bạn sửa:
Mã:
If Application.CountA(.Range("D2:D" & Rws1)) = Application.CountA(.Range("B2:B" & Rws1)) Then

Thành:
Mã:
If Application.CountA(.Range("B2:B" & Rws1)) = Application.CountIf(.Range("D2:D" & Rws1), ">0") Then
 
Upvote 0
Bạn thử code này xem được không ạ:
Mã:
Sub Button17_Click()
    Dim Rws1 As Long
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then Exit Sub
        If Application.CountA(.Range("D2:D" & Rws1)) = Application.CountA(.Range("B2:B" & Rws1)) Then
            MsgBox "Hay nhap du lieu don thuoc"
            .Range("B" & Rws1 + 1).Select
        Else
            MsgBox "Hay nhap DU SO LUONG thuoc"
        End If
    End With
End Sub
Code ok rồi bác. Cho em hỏi thêm chút. Có cách nào hiển thị được tiếng Việt cho MsgBox không nhỉ?
 
Upvote 0
Code ok rồi bác. Cho em hỏi thêm chút. Có cách nào hiển thị được tiếng Việt cho MsgBox không nhỉ?
Tiếng Việt cho MsgBox , trên diễn đàn cũng có nhiều bạn tìm kiếm để tham khảo thêm nhé:
Mã:
Sub Button17_Click()
    Dim Rws1 As Long, tbOK As String, tbLoi As String, tbao As String
    
    tbOK = "Xin m" & ChrW(7901) & "i nh" & ChrW(7853) & "p d" & ChrW(7919) & " li" & ChrW(7879) & "u " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c!"
    tbLoi = "B" & ChrW(7841) & "n c" & ChrW(7847) & "n nh" & ChrW(7853) & "p s" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c, gi" & ChrW(225) & " tr" & ChrW(7883) & " nh" & ChrW(7853) & "p v" & ChrW(224) & "o ph" & ChrW(7843) & "i l" & ChrW(224) & " s" & ChrW(7889) & " l" & ChrW(7899) & "n h" & ChrW(417) & "n 0."
    tbao = "Thông báo!"
    
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then Exit Sub
        If Application.CountA(.Range("B2:B" & Rws1)) = Application.CountIf(.Range("D2:D" & Rws1), ">0") Then
'            MsgBox "Hay nhap du lieu don thuoc"
             Application.Assistant.DoAlert tbao, tbOK, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
        
            .Range("B" & Rws1 + 1).Select
        Else
'            MsgBox "Hay nhap DU SO LUONG thuoc"
            Application.Assistant.DoAlert tbao, tbLoi, msoAlertButtonOK, msoAlertIconCritical, msoAlertDefaultFirst, msoAlertCancelDefault, False
        End If
    End With
End Sub
 
Upvote 0
Tiếng Việt cho MsgBox , trên diễn đàn cũng có nhiều bạn tìm kiếm để tham khảo thêm nhé:
Mã:
Sub Button17_Click()
    Dim Rws1 As Long, tbOK As String, tbLoi As String, tbao As String
   
    tbOK = "Xin m" & ChrW(7901) & "i nh" & ChrW(7853) & "p d" & ChrW(7919) & " li" & ChrW(7879) & "u " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c!"
    tbLoi = "B" & ChrW(7841) & "n c" & ChrW(7847) & "n nh" & ChrW(7853) & "p s" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c, gi" & ChrW(225) & " tr" & ChrW(7883) & " nh" & ChrW(7853) & "p v" & ChrW(224) & "o ph" & ChrW(7843) & "i l" & ChrW(224) & " s" & ChrW(7889) & " l" & ChrW(7899) & "n h" & ChrW(417) & "n 0."
    tbao = "Thông báo!"
   
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then Exit Sub
        If Application.CountA(.Range("B2:B" & Rws1)) = Application.CountIf(.Range("D2:D" & Rws1), ">0") Then
'            MsgBox "Hay nhap du lieu don thuoc"
             Application.Assistant.DoAlert tbao, tbOK, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
       
            .Range("B" & Rws1 + 1).Select
        Else
'            MsgBox "Hay nhap DU SO LUONG thuoc"
            Application.Assistant.DoAlert tbao, tbLoi, msoAlertButtonOK, msoAlertIconCritical, msoAlertDefaultFirst, msoAlertCancelDefault, False
        End If
    End With
End Sub
Bác à. Có 1 chút nhầm lẫn ở đây. Nãy em kiểm tra chưa kỹ. Đó là Rws1, nếu Rws1=1 (tức nếu dữ liệu TÊN THUỐC - HÀM LƯỢNG bị xóa hết từ B2 trở xuống thì "Xin mời nhập dữ liệu đơn thuốc", Còn sau khi hoàn thành kiểm tra số lượng (các điều kiện....) thì báo là "Đã hoàn thành". Em test thử 2 câu lệnh này chưa thấy chạy đến. Bác có thể hoàn thành giúp em với không?
 
Upvote 0
Bác à. Có 1 chút nhầm lẫn ở đây. Nãy em kiểm tra chưa kỹ. Đó là Rws1, nếu Rws1=1 (tức nếu dữ liệu TÊN THUỐC - HÀM LƯỢNG bị xóa hết từ B2 trở xuống thì "Xin mời nhập dữ liệu đơn thuốc", Còn sau khi hoàn thành kiểm tra số lượng (các điều kiện....) thì báo là "Đã hoàn thành". Em test thử 2 câu lệnh này chưa thấy chạy đến. Bác có thể hoàn thành giúp em với không?
Đây Bạn xem ạ:
Mã:
Sub Button17_Click()
    Dim Rws1 As Long, tbOK As String, tbLoi As String, tbao As String
    
    tbOK = "Xin m" & ChrW(7901) & "i nh" & ChrW(7853) & "p d" & ChrW(7919) & " li" & ChrW(7879) & "u " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c!"
    tbLoi = "B" & ChrW(7841) & "n c" & ChrW(7847) & "n nh" & ChrW(7853) & "p s" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c, gi" & ChrW(225) & " tr" & ChrW(7883) & " nh" & ChrW(7853) & "p v" & ChrW(224) & "o ph" & ChrW(7843) & "i l" & ChrW(224) & " s" & ChrW(7889) & " l" & ChrW(7899) & "n h" & ChrW(417) & "n 0."
    tbao = "Thông báo!"
    
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then
'            MsgBox "Hay nhap du lieu don thuoc"
             Application.Assistant.DoAlert tbao, tbOK, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
            .Range("B" & Rws1 + 1).Select
        ElseIf Application.CountA(.Range("B2:B" & Rws1)) <> Application.CountIf(.Range("D2:D" & Rws1), ">0") Then
'            MsgBox "Hay nhap DU SO LUONG thuoc"
            Application.Assistant.DoAlert tbao, tbLoi, msoAlertButtonOK, msoAlertIconCritical, msoAlertDefaultFirst, msoAlertCancelDefault, False
        End If
    End With
End Sub
 
Upvote 0
Em test thử không biết sao thành đăng bài luôn. Làm sao để xóa bài đăng được ạ :(
Mã:
fdfdfdfdfd
fdfdf
fdfdfdfd
 
Lần chỉnh sửa cuối:
Upvote 0
Đây Bạn xem ạ:
Mã:
Sub Button17_Click()
    Dim Rws1 As Long, tbOK As String, tbLoi As String, tbao As String
   
    tbOK = "Xin m" & ChrW(7901) & "i nh" & ChrW(7853) & "p d" & ChrW(7919) & " li" & ChrW(7879) & "u " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c!"
    tbLoi = "B" & ChrW(7841) & "n c" & ChrW(7847) & "n nh" & ChrW(7853) & "p s" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c, gi" & ChrW(225) & " tr" & ChrW(7883) & " nh" & ChrW(7853) & "p v" & ChrW(224) & "o ph" & ChrW(7843) & "i l" & ChrW(224) & " s" & ChrW(7889) & " l" & ChrW(7899) & "n h" & ChrW(417) & "n 0."
    tbao = "Thông báo!"
   
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then
'            MsgBox "Hay nhap du lieu don thuoc"
             Application.Assistant.DoAlert tbao, tbOK, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
            .Range("B" & Rws1 + 1).Select
        ElseIf Application.CountA(.Range("B2:B" & Rws1)) <> Application.CountIf(.Range("D2:D" & Rws1), ">0") Then
'            MsgBox "Hay nhap DU SO LUONG thuoc"
            Application.Assistant.DoAlert tbao, tbLoi, msoAlertButtonOK, msoAlertIconCritical, msoAlertDefaultFirst, msoAlertCancelDefault, False
        End If
    End With
End Sub
Hi. Gần được rồi, Thiếu chút nữa bác ơi Còn sau khi hoàn thành kiểm tra số lượng (các điều kiện....) thì báo là "Đã hoàn thành".
 
Upvote 0
Hi. Gần được rồi, Thiếu chút nữa bác ơi Còn sau khi hoàn thành kiểm tra số lượng (các điều kiện....) thì báo là "Đã hoàn thành".
Thế này phải không bạn?
Mã:
Sub Button17_Click()
    Dim Rws1 As Long, tbOK As String, tbLoi As String, tbao As String, tbHoanThanh As String
    
    tbOK = "Xin m" & ChrW(7901) & "i nh" & ChrW(7853) & "p d" & ChrW(7919) & " li" & ChrW(7879) & "u " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c!"
    tbLoi = "B" & ChrW(7841) & "n c" & ChrW(7847) & "n nh" & ChrW(7853) & "p s" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c, gi" & ChrW(225) & " tr" & ChrW(7883) & " nh" & ChrW(7853) & "p v" & ChrW(224) & "o ph" & ChrW(7843) & "i l" & ChrW(224) & " s" & ChrW(7889) & " l" & ChrW(7899) & "n h" & ChrW(417) & "n 0."
    tbHoanThanh = ChrW(272) & ChrW(227) & " ho" & ChrW(224) & "n th" & ChrW(224) & "nh !"
    tbao = "Thông báo!"
    
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then
'            MsgBox "Hay nhap du lieu don thuoc"
             Application.Assistant.DoAlert tbao, tbOK, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
            .Range("B" & Rws1 + 1).Select
        ElseIf Application.CountA(.Range("B2:B" & Rws1)) <> Application.CountIf(.Range("D2:D" & Rws1), ">0") Then
'            MsgBox "Hay nhap DU SO LUONG thuoc"
            Application.Assistant.DoAlert tbao, tbLoi, msoAlertButtonOK, msoAlertIconCritical, msoAlertDefaultFirst, msoAlertCancelDefault, False
        Else
'            MsgBox "Da Hoan Thanh"
            Application.Assistant.DoAlert tbao, tbHoanThanh, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
        End If
    End With
End Sub
 
Upvote 0
Thế này phải không bạn?
Mã:
Sub Button17_Click()
    Dim Rws1 As Long, tbOK As String, tbLoi As String, tbao As String, tbHoanThanh As String
   
    tbOK = "Xin m" & ChrW(7901) & "i nh" & ChrW(7853) & "p d" & ChrW(7919) & " li" & ChrW(7879) & "u " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c!"
    tbLoi = "B" & ChrW(7841) & "n c" & ChrW(7847) & "n nh" & ChrW(7853) & "p s" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng " & ChrW(273) & ChrW(417) & "n thu" & ChrW(7889) & "c, gi" & ChrW(225) & " tr" & ChrW(7883) & " nh" & ChrW(7853) & "p v" & ChrW(224) & "o ph" & ChrW(7843) & "i l" & ChrW(224) & " s" & ChrW(7889) & " l" & ChrW(7899) & "n h" & ChrW(417) & "n 0."
    tbHoanThanh = ChrW(272) & ChrW(227) & " ho" & ChrW(224) & "n th" & ChrW(224) & "nh !"
    tbao = "Thông báo!"
   
    With Sheets("Xuat thuoc le")
        Rws1 = .Range("B65536").End(xlUp).Row
        If Rws1 = 1 Then
'            MsgBox "Hay nhap du lieu don thuoc"
             Application.Assistant.DoAlert tbao, tbOK, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
            .Range("B" & Rws1 + 1).Select
        ElseIf Application.CountA(.Range("B2:B" & Rws1)) <> Application.CountIf(.Range("D2:D" & Rws1), ">0") Then
'            MsgBox "Hay nhap DU SO LUONG thuoc"
            Application.Assistant.DoAlert tbao, tbLoi, msoAlertButtonOK, msoAlertIconCritical, msoAlertDefaultFirst, msoAlertCancelDefault, False
        Else
'            MsgBox "Da Hoan Thanh"
            Application.Assistant.DoAlert tbao, tbHoanThanh, msoAlertButtonOK, msoAlertIconInfo, msoAlertDefaultFirst, msoAlertCancelDefault, False
        End If
    End With
End Sub
Code ok rồi ạ. Cảm ơn bác đã quan tâm và trợ giúp nhiệt tình!
 
Upvote 0
Web KT

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

Back
Top Bottom