エクセルマクロで、チェックボックスにチェックを入れたデータを自動転記するVBAコードをご紹介します。
このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。
チェックしたデータ自動転記①
以下のマクロを実行すると、チェックボックスでレ点を入れた文字を転記します。
Sub チェックボックスのチェックをいれたものだけ抽出()
Dim cb As checkbox
Dim i As Long
Dim j As Long
i = 2
j = 2
'チェックボックスをループ
For Each cb In ActiveSheet.CheckBoxes
'チェックボックスがオンだったら
If cb.Value = xlOn Then
Cells(j, 5) = Cells(i, 1).Value
j = j + 1
End If
i = i + 1
Next cb
End Sub
マクロ実行後
チェックボックスがONになっている値を転記しました。
チェックボックスは「フォームコントロール」から挿入しています。
チェックしたデータ自動転記②
以下のマクロを実行すると、チェックボックスでレ点を入れた文字を転記します。
Sub チェックボックスのチェックをいれたものだけ抽出()
Dim cb As checkbox
Dim j As Long
Dim cbRow As String
j = 2
'チェックボックスをループ
For Each cb In ActiveSheet.CheckBoxes
'チェックボックスがオンだったら
If cb.Value = xlOn Then
'チェックボックスの行取得
cbRow = Split(cb.TopLeftCell.Address, "$")(2)
'E列に転記
Cells(j, 5) = Cells(cbRow, 1).Value
j = j + 1
End If
Next cb
End Sub
マクロ実行後
チェックボックスがONになっている値を転記しました。
チェックボックスは「フォームコントロール」から挿入しています。
チェックしたデータ自動転記(リンクするセル)
以下のマクロを実行すると、チェックボックスでレ点を入れた値を転記します。
Sub チェックボックスのチェックを入れたものだけ入力()
Dim i As Long
Dim j As Long
Dim LastRow As Long
i = 2
j = 2
'A列の最終行を取得
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'ループ
For i = 2 To LastRow
'C列がTRUEだったら
If Cells(i, 3) = True Then
'E列にA列の値を転記
Cells(j, 5) = Cells(i, 1).Value
j = j + 1
End If
Next
End Sub
マクロ実行後
C列が「TRUE」になっている値を転記しました。
すべてのチェックボックスに「リンクするセル」を設定しています。
チェックしたデータ自動転記(同シートに転記)
以下のマクロを実行すると、チェックボックスがオンになっている行データを転記します。
Sub チェックボックスのチェックをいれたものを転記()
Dim cb As checkbox
Dim i As Long
Dim j As Long
Dim Tmp() As Variant
i = 0
j = 2
'チェックボックスをループ
For Each cb In ActiveSheet.CheckBoxes
'チェックボックスがオンだったら
If cb.Value = xlOn Then
'配列の要素数を指定
ReDim Preserve Tmp(i)
'配列にA~D列の値を格納
Tmp(i) = Range(Cells(j, 1), Cells(j, 4))
i = i + 1
End If
j = j + 1
Next cb
'配列に格納したデータをH列から転記
For i = 0 To UBound(Tmp)
Range(Cells(i + 2, 8), Cells(i + 2, 11)) = Tmp(i)
Next i
End Sub
マクロ実行後
チェックボックスにチェックが入っている 行のデータを転記しました。
チェックしたデータ自動転記(別シートに転記)
以下のマクロを実行すると、チェックボックスがオンになっているデータを別シートへ転記します。
Sub チェックボックスのチェックをいれたものを転記()
Dim St1 As Worksheet
Dim St2 As Worksheet
Dim cb As checkbox
Dim i As Long
Dim j As Long
Dim Tmp() As Variant
i = 0
j = 2
Set St1 = Sheets("Sheet1")
Set St2 = Sheets("転記先")
St1.Select
'チェックボックスをループ
For Each cb In St1.CheckBoxes
'チェックボックスがオンだったら
If cb.Value = xlOn Then
'配列の要素数を指定
ReDim Preserve Tmp(i)
'配列にA~D列の値を格納
Tmp(i) = St1.Range(Cells(j, 1), Cells(j, 4))
i = i + 1
End If
j = j + 1
Next cb
'配列に格納したデータを別シートに転記
St2.Select
For i = 0 To UBound(Tmp)
St2.Range(Cells(i + 2, 1), Cells(i + 2, 4)) = Tmp(i)
Next i
End Sub
マクロ実行後
チェックボックスにチェックが入っているデータを 別シートへ転記しました。
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】チェックボックス処理を自動化まとめ
【エクセルマクロ】チェックボックスを自動操作:使用例16選
...
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説
リンク