2016-05-16 72 views
0

我試圖在複選框被選中後將所有數據從一行(從列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

回答

0

請嘗試使用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

相關問題