chọn checkbox1 thì lưu vào sheet4, chọn checkbox2 thì lưu vào sheet5

Liên hệ QC

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
965
Được thích
175
Giới tính
Nữ
Chào các anh chị, em có tạo form nhập liệu, trên form có 2 checkbox(1 và 2) và nút lưu.
Em muốn khi chọn checkbox1 và nhấn nút lưu thì dữ liệu trên form sẽ lưu vào sheet4, và khi chọn checkbox2 và nhấn nút lưu thì dữ liệu trên form sẽ lưu vào sheet5.
Hai sheet4 và sheet5 có cấu trúc giống nhau.
Code nút lưu:
Mã:
Private Sub cb_Luu_Click()
Dim i As Integer, N As Long
    If tb_Ngay = "" Or tb_SP = "" Then MsgBox ("Ban chua nhap ngay hoac so phieu"), vbExclamation: Exit Sub
    If ListBox1.ListCount = 0 Then MsgBox ("ban chua cap nhat Noi dung  vao Listbox"), vbExclamation: Exit Sub

Application.ScreenUpdating = False 'giup code chay. nhanh hon
    irow = Sheet4.Cells(Rows.count, "A").End(xlUp).Offset(1, 0).Row 'xac dinh row cuoi cung` chua' du~ lieu

    For i = 0 To ListBox1.ListCount - 1
        Sheet4.Cells(irow + N, 1) = irow + N - 3
        Sheet4.Cells(irow + N, 2) = CDate(tb_Ngay)
        Sheet4.Cells(irow + N, 3) = UCase(tb_SP)
        Sheet4.Cells(irow + N, 4) = UCase(tb_NN)
        Sheet4.Cells(irow + N, 5) = "'" & UCase(tb_DH)
        With ListBox1
            Sheet4.Cells(irow + N, 5) = "'" & UCase(.List(i, 1))         'don hang
            Sheet4.Cells(irow + N, 6) = "'" & UCase(.List(i, 2))         'ma vai
            Sheet4.Cells(irow + N, 7) = .List(i, 3)                      'loai vai
            Sheet4.Cells(irow + N, 8) = .List(i, 4)                      'mau vai
            Sheet4.Cells(irow + N, 9) = .List(i, 5)                      'DVT
            Sheet4.Cells(irow + N, 10) = CDbl(.List(i, 6))               'so luong xuat
            Sheet4.Cells(irow + N, 11) = .List(i, 7)
            Sheet4.Cells(irow + N, 12) = .List(i, 8)                'ghi chu
        End With
        N = N + 1
    Next
    Sheet4.Cells(irow, 10).Resize(N).NumberFormat = "#,##0.00"
    Sheet4.Cells(irow, 1).Resize(N, 12).Borders.LineStyle = 1
    Sheet4.Cells(irow, 1).Resize(N, 12).Borders.ThemeColor = 5
    tb_Ngay = "": tb_SP = "": tb_NN = "":  tb_DH = "": tb_MaVai = "": tb_Nhom = ""
    tb_LoaiVai = "": cb_MauVai = "": tb_DVT = "": tb_SLX = "":  tb_GhiChu = ""
ListBox1.Clear
Application.ScreenUpdating = True
MsgBox ("cap nhat xong"), , "GPE"
tb_Ngay.SetFocus
End Sub
Em nhờ các anh chị viết dùm code để thực hiện điều đó ạ.
Bài đã được tự động gộp:

Hình form:
218782
 
Lần chỉnh sửa cuối:
Code của Bác @SA_DQ giờ chỉ còn bẫy lỗi không cho chọn 2 CheckBox một lúc.
Các anh chị có thể giúp em với.
 
Upvote 0
Code của Bác @SA_DQ giờ chỉ còn bẫy lỗi không cho chọn 2 CheckBox một lúc.
Các anh chị có thể giúp em với.

Sao không chọn cách ít tốn code cho nhanh nhỉ.
Code chọn 1 trong 2 checkbox đây:

Mã:
Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        CheckBox2.Value = False
    End If
End Sub

Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then
        CheckBox1.Value = False
    End If
End Sub
 
Upvote 0
Oh! Cám ơn anh Bảo!
 
Upvote 0
ANh Bảo có thể bẫy lỗi dùm em khi nhấn nút lưu mà 2 checkBox chưa chọn thì có MsgBox được không ạ.
 
Upvote 0
Bạn voọc nhiều lần với macro cho nút lệnh 'Luu' có tên 'CmdLuu' này xem:
PHP:
Private Sub CmdLuu_Click()
 If Me!CheckBox1 Xor Me!CheckBox2 Then
    MsgBox "True"
 Else
    MsgBox "False "
 End If
End Sub

Bằng cách chọn 1 hay 2 hoặc 0 chọn các TextBox
 
Upvote 0
Bác SA_DQ giúp em lọc đơn hang với
 
Upvote 0
Bác SA_DQ giúp em lọc đơn hang với
Lại tiếp tục làm thầy bói theo iêu cầu:
PHP:
Private Sub Cb_Luu_Click()
Dim I As Integer, N As Long:                                                    Dim Sh As Worksheet
If tb_Ngay = "" Or tb_SP = "" Then
    MsgBox ("Ban chua nhap ngay hoac so phieu"), vbExclamation:                 Exit Sub
End If
If ListBox1.ListCount = 0 Then
    MsgBox ("ban chua cap nhat Noi dung  vao Listbox"), vbExclamation:          Exit Sub
End If
Application.ScreenUpdating = False              'Giúp Code Chay Nhanh Hon  '
If Me!CheckBox1 Xor Me!CheckBox2 Then       ' Chon 1 Trong 2 CheckBox   '
    If Me!CheckBox1 Then
        Set Sh = Sheet4
    Else
        Set Sh = Sheet5
    End If
    iRow = Sh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row    'Xác Dinh Row Cuoi Cùng` Có Du Lieu '
    For I = 0 To ListBox1.ListCount - 1
        Sh.Cells(iRow + N, 1) = iRow + N - 3:               Sh.Cells(iRow + N, 2) = CDate(tb_Ngay)
        Sh.Cells(iRow + N, 3) = UCase(tb_SP):               Sh.Cells(iRow + N, 4) = UCase(tb_NN)
        Sh.Cells(iRow + N, 5) = "'" & UCase(tb_DH)
        With ListBox1
            Sh.Cells(iRow + N, 5) = "'" & UCase(.List(I, 1)):    Sh.Cells(iRow + N, 6) = "'" & UCase(.List(I, 2))
            Sh.Cells(iRow + N, 7) = .List(I, 3):                 Sh.Cells(iRow + N, 8) = .List(I, 4)
            Sh.Cells(iRow + N, 9) = .List(I, 5):                 Sh.Cells(iRow + N, 10) = CDbl(.List(I, 6))
            Sh.Cells(iRow + N, 11) = .List(I, 7):                Sh.Cells(iRow + N, 12) = .List(I, 8)
        End With
        N = N + 1
    Next I
    Sh.Cells(iRow, 10).Resize(N).NumberFormat = "#,##0.00"
    Sh.Cells(iRow, 1).Resize(N, 12).Borders.LineStyle = 1
    Sh.Cells(iRow, 1).Resize(N, 12).Borders.ThemeColor = 5
    tb_Ngay = "":       tb_SP = "":             tb_NN = "":     tb_DH = "":         tb_MaVai = "":      tb_Nhom = ""
    tb_LoaiVai = "":    cb_MauVai = "":     tb_DVT = "":    tb_SLX = "":         tb_GhiChu = ""
    ListBox1.Clear
    MsgBox ("Câp Nhât Xong"), , "GPE.COM Xin Thông Báo!"
    Me!tb_Ngay.SetFocus
 Else
    MsgBox "Ban Cân Chon 1 Trong 2 CheckBox", , "GPE.COM Xin Luu Ý!"
 End If
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Code của Bác SA_DQ thì khi chọn 1 hoặc 2 CheckBox thì có MsgBox "True", còn không chọn cái nào thì có MsgBox "False", ý của em là chỉ khi không chọn CheckBox nào cả thì có MsgBox "ban chua chon sheet de nhap", nên em có sửa lại code của Bác SA_DQ là:
Mã:
If Me!CheckBox1 Xor Me!CheckBox2.Value = False Then
    MsgBox ("ban chua chon sheet de nhap"), vbExclamation:                      Exit Sub
 End If
Em thử thì thấy chạy đúng ý rồi.
Chữ "Xor" trong code có phải là "and"không Bác SA_DQ?
Bài đã được tự động gộp:

Em nói Bác SA_DQ giúp em lọc đơn hàng là bên Topic "Lọc đơn hàng" đó ạ. Ví code Bác viết bên đó em chạy không ra kết quả.
 
Upvote 0
Thì đúng là vậy rồi nhưng bạn H lại muốn vậy (chắc cho . . . ) thì phải thêm code thay vì không cần dùng code nào nếu dùng Option button
Code đó cũng người khác thêm mà . . . .
Tuy nhiên với 1 trình VBA nhất định thì CheckBox dễ hiểu & xài hơn: Suy nghĩ thực dụng đó chứ!

Em nói Bác SA_DQ giúp em lọc đơn hàng là bên Topic "Lọc đơn hàng" đó ạ. Ví code Bác viết bên đó em chạy không ra kết quả.
??? Kiểu này là bài vô thùng rác rồi! Buồn . . . quá.

Chữ "Xor" trong code có phải là "and"không Bác SA_DQ?

Không, hoàn toàn!; Nó có họ hàng xa với 'Or'
 
Lần chỉnh sửa cuối:
Upvote 0
Code đó cũng người khác thêm mà . . . .
Tuy nhiên với 1 trình VBA nhất định thì CheckBox dễ hiểu & xài hơn: Suy nghĩ thực dụng đó chứ!


??? Kiểu này là bài vô thùng rác rồi! Buồn . . . quá.



Không, hoàn toàn!; Nó có họ hàng xa với 'Or'
OptionButton mới là lôgíc. Cho 100 khả năng nhưng chỉ cho chọn 1 trong 100 khả năng. Chỉ khi: cho 100 tính chất, hãy chọn vài tính chất thì mới là CheckBox. Người ta "đẻ" ra OptionButton và cả CheckBox là cũng có suy nghĩ cả chứ có phải "đẻ" theo hứng đâu.
 
Upvote 0
Em thử thì chạy theo ý rồi ạ:
218865
 
Upvote 0
Nhưng ở đây em nó cần chọn 1 trong 2 mà thôi; Với lại trình có hạn nên iêu cầu làm với CheckBox (Do chưa biết đến Option Button chăng?)
Ở đây mình nghĩ rằng: Em này cần giải quyết công việc, chưa cần biết đến 'Học thuật;
 
Upvote 0
bài "Lọc đơn hàng" ở đây ạ:
 
Upvote 0
Web KT

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

Back
Top Bottom