2016-05-16 8 views
0

チェックボックスを選択すると、すべてのデータを1列(列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

関連する問題