【Excel VBA】複数行にチェックボックスを自動配置するマクロを作成した
Excelで「行ごとにチェックボックスを配置したい」という場面は意外と多いです。しかし、手作業でひとつずつ配置するのはとても面倒です。そこで今回は、VBAで指定した範囲にチェックボックスを一括で追加し、対応するリンクセルも自動で設定するマクロを作成しました。
このマクロでは、以下の処理を行います。
- 対象のシート(例:Sheet1)を選択
- A列の4行目から28行目にチェックボックスを一括配置
- 各チェックボックスのリンクセルをB列に設定
- 既存のチェックボックスがあれば削除
作成したVBAコードは以下のとおりです。
Sub AddCheckBoxes()
Dim ws As Worksheet
Dim i As Long
Dim chkBox As Shape
Dim startRow As Long, endRow As Long
Dim targetColumn As String
Dim linkColumn As String
' 対象のシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
' チェックボックスを配置する行と列を指定
startRow = 4
endRow = 28
targetColumn = "A"
linkColumn = "B"
' 既存のチェックボックスを削除
For Each chkBox In ws.Shapes
If chkBox.Type = msoFormControl And chkBox.FormControlType = xlCheckBox Then
chkBox.Delete
End If
Next chkBox
' チェックボックスを一括配置
For i = startRow To endRow
Set chkBox = ws.Shapes.AddFormControl(xlCheckBox, _
ws.Cells(i, targetColumn).Left, _
ws.Cells(i, targetColumn).Top, _
ws.Cells(i, targetColumn).Width, _
ws.Cells(i, targetColumn).Height)
chkBox.Name = "CheckBox_" & i
chkBox.TextFrame.Characters.Text = ""
chkBox.ControlFormat.LinkedCell = ws.Cells(i, linkColumn).Address
Next i
MsgBox "チェックボックスを " & endRow - startRow + 1 & " 個配置しました!"
End Sub
このマクロを実行するとこんな感じになります。
スポンサーリンク
