Sub TEST1()
'Sheet2をクリア
Sheets("Sheet2").Range("A2:C1000").ClearContents
For i = 1 To Sheets("Sheet1").CheckBoxes.Count
'チェックがついている場合
If Sheets("Sheet1").CheckBoxes("チェック" & i).Value = xlOn Then
'最終行+1行に、コピー
With Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp)
Sheets("Sheet1").Cells(i + 1, "B").Resize(, 3).Copy .Offset(1, 0)
End With
End If
Next
End Sub
Sub TEST2()
'Sheet2をクリア
Sheets("Sheet2").Range("A2:C1000").ClearContents
j = 1
For i = 1 To Sheets("Sheet1").CheckBoxes.Count
'チェックがついている場合
If Sheets("Sheet1").CheckBoxes("チェック" & i).Value = xlOn Then
j = j + 1
'チェックしたデータをコピー
With Sheets("Sheet2")
Sheets("Sheet1").Cells(i + 1, "B").Resize(, 3).Copy .Cells(j, "A")
End With
End If
Next
End Sub
こっちの方がVBAコードがシンプルになります。
チェックを入れて、実行してみます。
チェックを入れて実行
チェックした値を転記できます。
別シートに転記できた
チェックした値を転記できました。
リンクしたセルの値を使う
次は、「リンクしたセルの値」を使うという方法で、値を転記してみます。
チェックボックスとセルをリンクする
まずは、チェックボックスとセルをリンクする必要があります。
セルとリンクする
チェックボックスで右クリックして、コントロールの書式設定を選択します。
リンクするセルのボタンを選択します。
リンクするセルを指定します。
セルとリンクできます。
他のチェックボックスも、セルとリンクします。
これで、チェックボックスとセルとリンクすることができます。
場所をとってしまうので、リンクしたセルを、チェックボックスのところに移動します。
リンクしたセルを移動
チェックボックスが見ずらいので、表示形式で「;;;」を入力して、非表示にします。
表示形式で非表示にする
これで、チェックボックスとセルをリンクできます。
チェックボックスとセルをリンクできた
チェックボックスとセルをリンクできました。
VBAコード
では、リンクしたセルを使って、チェックした値を別シートに転記してみます。
リンクしたセル値を使って、チェックした値を別シート転記するVBAコードです。
Sub TEST3()
'Sheet2をクリア
Sheets("Sheet2").Range("A2:C1000").ClearContents
For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
'チェックがついている場合
If Sheets("Sheet1").Cells(i, "A") = True Then
'最終行+1行目にコピー
With Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp)
Sheets("Sheet1").Cells(i, "B").Resize(, 3).Copy .Offset(1, 0)
End With
End If
Next
End Sub
Sub TEST4()
'Sheet2をクリア
Sheets("Sheet2").Range("A2:C1000").ClearContents
j = 1
For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
'チェックがついている場合
If Sheets("Sheet1").Cells(i, "A") = True Then
j = j + 1
'最終行+1行目にコピー
With Sheets("Sheet2")
Sheets("Sheet1").Cells(i, "B").Resize(, 3).Copy .Cells(j, "A")
End With
End If
Next
End Sub