【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
このマクロを実行するとこんな感じになります。
スポンサーリンク