选中复选框时将行复制到新工作表

问题描述:

我试图在复选框被选中后将所有数据从一行(从列A:O)复制到新工作表。但是,我拥有的代码也在复制所有先前检查过的行。我不想取消选择任何以前选中的框。选中复选框时将行复制到新工作表

Sub CopyRows() 
    Dim LRow As Long, ChkBx As CheckBox, WS2 As Worksheet 
    Set WS2 = Worksheets("Sheet2") 
    LRow = WS2.Range("A" & Rows.Count).End(xlUp).Row 
    For Each ChkBx In ActiveSheet.CheckBoxes 
     If ChkBx.Value = 1 Then 
      LRow = LRow + 1 
      WS2.Cells(LRow, "A").Resize(, 14) = Range("A" & _ 
      ChkBx.TopLeftCell.Row).Resize(, 14).Value 
     End If 
    Next 
End Sub 
+0

请格式化您的代码,以便我们可以更好地阅读它。 – CConard96

请尝试使用ActiveCell.Row修改后的代码(假定最后一个复选框行已被选中/激活)。

Sub CopyRows() 
    Dim LRow As Long, r As Long, ChkBx As CheckBox, WS2 As Worksheet 
    Set WS2 = Worksheets("Sheet2") 
    r = ActiveCell.Row 
    WS2.Cells(r, "A").Resize(, 14) = Range("A" & ChkBx.TopLeftCell.Row).Resize(, 14).Value 
End Sub 
+0

感谢您发布修改后的代码。是的,你的假设是正确的。我应付了代码,分配了宏,但是当我选择任何复选框时,什么都不会发生。我尝试在VBA中运行代码,但它没有产生任何结果。感谢您重新格式化! @ Cconard96,感谢您的评论。试图重新格式化,但我张贴错误,无法保存编辑。 – puffyharley

+0

@puffyharley我修改了答案。 – josemr