Bạn mô tả chi tiết vấn đề, có ví dụ mẫu càng tốt.Cho em hỏi cách lưu tên checkbox được chọn tới các cột từ B đến E tương ứng với tên 4 checkbox trong file đính kèm.
mỗi lần thay đổi tùy chọn checkbox thì các tên checkbox sẽ lại được ghi vào dòng tiếp theo. Mong mọi người góp sức chân thành cảm ơn !
Dạ có nghĩa là khi mở form ta chọn một hay nhiều checkbox trên form thì tên các checkbox này sẽ được lưu theo thứ tự từ cột B đến cột EBạn mô tả chi tiết vấn đề, có ví dụ mẫu càng tốt.
Khi nào thì nó sẽ hiểu là bạn chọn checkbox khác?Dạ có nghĩa là khi mở form ta chọn một hay nhiều checkbox trên form thì tên các checkbox này sẽ được lưu theo thứ tự từ cột B đến cột E
Ví dụ chỉ chọn checkbox 2, 3 thì tại B1=checkbox2, C1=checkbox3 và khi thay đổi chọn checkbox khác ví dụ chọn checkbox 1,3,4 thìa nó sẽ ghi xuống dòng tiếp theo tương tự cũng bắt đầu từ B2....
Bạn thử dùng code này xem sao.Dạ có nghĩa là khi mở form ta chọn một hay nhiều checkbox trên form thì tên các checkbox này sẽ được lưu theo thứ tự từ cột B đến cột E
Ví dụ chỉ chọn checkbox 2, 3 thì tại B1=checkbox2, C1=checkbox3 và khi thay đổi chọn checkbox khác ví dụ chọn checkbox 1,3,4 thìa nó sẽ ghi xuống dòng tiếp theo tương tự cũng bắt đầu từ B2....
Private Sub CommandButton1_Click()
Dim i As Byte, j As Byte, k As Long
With Sheet1
k = .Range("B1").End(xlDown).Row
If .Range("B" & k).Value <> "" Then k = k + 1
j = 0
For i = 1 To 4
If Me.Controls("CheckBox" & i).Value = True Then
.Range("B" & k).Offset(, j).Value = "CheckBox" & i
j = j + 1
End If
Next i
End With
End Sub
Mỗi khi mở form ạKhi nào thì nó sẽ hiểu là bạn chọn checkbox khác?
em test lỗi ở đây aBạn thử dùng code này xem sao.
Mã:Private Sub CommandButton1_Click() Dim i As Byte, j As Byte, k As Long With Sheet1 k = .Range("B1").End(xlDown).Row If .Range("B" & k).Value <> "" Then k = k + 1 j = 0 For i = 1 To 4 If Me.Controls("CheckBox" & i).Value = True Then .Range("B" & k).Offset(, j).Value = "CheckBox" & i j = j + 1 End If Next i End With End Sub
dạ em chạy file bài 1 ạFile của tôi chạy ngon lành, có khả năng bạn dùng code này để áp dụng cho file khác nên nó bị lỗi. Tôi viết code cho file ở #1.
Bạn thử dùng code này xem sao.
Mã:Private Sub CommandButton1_Click()
Nếu lần trước và lần sau số checkbox không thay đổi thì sao?Mỗi khi mở form ạ
dạ nếu check trùng cũng ghi ạ, nếu ko check thì ko ghi ạNếu lần trước và lần sau số checkbox không thay đổi thì sao?
(2 lần mở form, hoặc 2 lần click button gì đó)
Đồng thời: nếu chả có check nào hết thì ghi cái gì?
Thử sửa lại thế này.dạ nếu check trùng cũng ghi ạ, nếu ko check thì ko ghi ạ
Private Sub CommandButton1_Click()
Dim i As Byte, j As Byte, k As Long
With Sheet1
If .Range("B1").Value = Empty Then
k = 1
Else
k = .UsedRange.Rows.Count + 1
End If
j = 0
For i = 1 To 4
If Me.Controls("CheckBox" & i).Value = True Then
.Range("B" & k).Offset(, j).Value = "CheckBox" & i
j = j + 1
End If
Next i
End With
End Sub
dạ cũng bị ở dòng đó ạThử sửa lại thế này.
Mã:Private Sub CommandButton1_Click() Dim i As Byte, j As Byte, k As Long With Sheet1 If .Range("B1").Value = Empty Then k = 1 Else k = .UsedRange.Rows.Count + 1 End If j = 0 For i = 1 To 4 If Me.Controls("CheckBox" & i).Value = True Then .Range("B" & k).Offset(, j).Value = "CheckBox" & i j = j + 1 End If Next i End With End Sub
Code này đúng với đòi hỏi "không check không ghi", nhưng thớt quên sự thực là nếu tôi xoá hết các checkboxes thì cũng là 1 lần thay đổi.Thử sửa lại thế này.
Mã:Private Sub CommandButton1_Click() Dim i As Byte, j As Byte, k As Long With Sheet1 If .Range("B1").Value = Empty Then k = 1 Else k = .UsedRange.Rows.Count + 1 End If j = 0 For i = 1 To 4 If Me.Controls("CheckBox" & i).Value = True Then .Range("B" & k).Offset(, j).Value = "CheckBox" & i j = j + 1 End If Next i End With End Sub
sao lạ file này lại đượcSao vậy ta.