Mình mới bắt đầu tập sử dụng VBA nên nhờ các bạn xem giúp.
Form của mình lập ra là để lấy số hợp đồng, do có chiều loại hợp đồng nên mình sử dụng check box ( ô nào được tick thì sẽ tăng thêm 1). Các cột đều hoạt động tốt, chỉ có cột HDTD là bị lỗi ( Cứ mõi lần không tick vào nó thì lần sau nó lại đếm từ 0 ).
Rất mong các bạn giúp đỡ. Xin chân thành cảm ơn và hậu tạ
Mình mới bắt đầu tập sử dụng VBA nên nhờ các bạn xem giúp.
Form của mình lập ra là để lấy số hợp đồng, do có chiều loại hợp đồng nên mình sử dụng check box ( ô nào được tick thì sẽ tăng thêm 1). Các cột đều hoạt động tốt, chỉ có cột HDTD là bị lỗi ( Cứ mõi lần không tick vào nó thì lần sau nó lại đếm từ 0 ).
Rất mong các bạn giúp đỡ.
Còn so_gnn = "",so_bctd = "",so_bbdg = "" không ảnh hưởng gì tới bảng tính (A2, B2, E2)
--------
Tôi thấy trong các ô A2, B2, E2 có công thức. Vậy nếu bạn cần sheet Nhap thì lập công thức tương tự cho C2, D2 và sửa khai báo bỏ As Range cho so_hdtc và so_hdtd.
phiên bản 1:
Mã:
Private Sub cmd_nhap_Click()
Dim so_gnn, so_bctd, so_bbdg, so_hdtc, so_hdtd
Dim iRow As Long
If Not (ChkBox_bctd Or ChkBox_bbdg Or ChkBox_hdtc Or ChkBox_hdtd Or ChkBox_gnn) Then
MsgBox "Hay chon it nhat mot hop dong"
Exit Sub
End If
' cac o a2, b2, c2, d2, e2 deu co cong thuc
If ChkBox_bctd = True Then so_bctd = Worksheets("Nhap").Range("a2") + 1
If ChkBox_bbdg = True Then so_bbdg = Worksheets("Nhap").Range("b2") + 1
If ChkBox_hdtc = True Then so_hdtc = Worksheets("Nhap").Range("c2") + 1
If ChkBox_hdtd = True Then so_hdtd = Worksheets("Nhap").Range("d2") + 1
If ChkBox_gnn = True Then so_gnn = Worksheets("Nhap").Range("e2") + 1
MsgBox "So bao cao tham dinh tai san la: " & so_bctd & Chr(13) & "So bien ban dinh gia la: " & so_bbdg & _
Chr(13) & "So hop dong the chap la: " & so_hdtc & Chr(13) & "So hop dong tin dung la: " & so_hdtd & Chr(13) & _
"So giay nhan no la: " & so_gnn
iRow = Worksheets("GNN").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Worksheets("GNN").Cells(iRow, 1).Value = Date
Worksheets("GNN").Cells(iRow, 2).Value = Me.cbox_ten_cbkh.Value
Worksheets("GNN").Cells(iRow, 3).Value = Me.Txtbox_tenkh.Value
Worksheets("GNN").Cells(iRow, 4).Value = so_bctd
Worksheets("GNN").Cells(iRow, 5).Value = so_bbdg
Worksheets("GNN").Cells(iRow, 6).Value = so_hdtc
Worksheets("GNN").Cells(iRow, 7).Value = so_hdtd
Worksheets("GNN").Cells(iRow, 8).Value = so_gnn
End Sub
2. Thiết lập cho các CheckBox ở trên giá trị Tag lần lượt là: "So bao cao tham dinh tai san la", "So bien ban dinh gia la", "So hop dong the chap la", "So hop dong tin dung la", "So giay nhan no la". Nếu không cần MsgBox trong cmd_nhap_Click thì bỏ khâu này.
3. code
Mã:
Private Sub cmd_nhap_Click()
Dim obj As Control, msg As String, count As Long, iRow As Long
If Not (ChkBox_bctd Or ChkBox_bbdg Or ChkBox_hdtc Or ChkBox_hdtd Or ChkBox_gnn) Then
MsgBox "Hay chon it nhat mot hop dong"
Exit Sub
End If
iRow = Worksheets("GNN").Cells(Rows.count, 1).End(xlUp).Offset(1, 0).Row
Worksheets("GNN").Cells(iRow, 1).Value = Date
Worksheets("GNN").Cells(iRow, 2).Value = Me.cbox_ten_cbkh.Value
Worksheets("GNN").Cells(iRow, 3).Value = Me.Txtbox_tenkh.Value
' cac o a2, b2, c2, d2, e2 deu co cong thuc
For Each obj In Me.Controls
If TypeOf obj Is MSForms.CheckBox Then
If obj.Value Then
count = Worksheets("Nhap").Cells(2, obj.TabIndex) + 1
' neu khong can MsgBox thi bo dong msg
msg = msg & obj.Tag & ": " & count & Chr(13)
Worksheets("GNN").Cells(iRow, obj.TabIndex + 3).Value = count
End If
End If
Next obj
MsgBox msg
End Sub
Nói chung code có thể viết theo nhiều kiểu, ở trên chỉ là ví dụ mà thôi.
Trước hết, mình xin cảm ơn bạn siwton rất nhiều, mình sẽ đọc thật kỹ bài của bạn để điều chỉnh. Mình nói hậu tạ là đùa thôi mà, nhưng mà nếu có thể hậu tạ bạn thiệt luôn. . Cảm ơn rất nhiều nhé.