備忘録を兼ねて、現在作成中のエクセルプログラムで使っているVBAを書きます
![DX](https://rakura.net/wp-content/uploads/2024/03/office-925806_1280-1024x683.jpg)
チェックボックスを一括作成
チェックボックスを作って、簡単に確認のチェックをしたいという場面は多いと思います。
基本的なチェックボックスの作り方
① 開発タブをクリックします。開発タブが表示されていない場合は、リボンを右クリックし、「開発」タブのチェックボックスをオンにします。
② [フォームコントロール]グループで、[チェックボックス]アイコンをクリックします。チェックボックスを配置したいセル(例:B2)をクリックして、チェックボックスを挿入します。
③ 挿入したチェックボックスを右クリックします。
④ コントロールの書式設定を選択し、コントロールタブをクリックします。
⑤ リンクするセルボックスに、チェックボックスとリンクさせたいセル (例:B2) を入力します
⑥ OKをクリックします。
これで、B2セルにチェックボックスが作られ、チェックをつけるとB2セルに「TRUE」が、チェックを外すと「FALSE」が入力されます。
あとは、関数などで「TRUE」の場合は〇〇などと利用出来ます。
大量に作る方法
今回は、1,000行目までチェックボックスを配置しようと思いましたが、やり方は3パターンかと思います。
- 上記を1,000回繰り返す
- ドラッグしてコピーする
- VBAを利用する
1.は現実的ではないので却下
2.はリンクさせたいセルも一緒にコピーされるため、一つにチェックをつけると全てにチェックがついてしまうため却下
というわけで、VBAを利用しようと思います。
VBAの手順
- VBAエディターを開く
- 「開発」タブに移動し、「Visual Basic」をクリックします。
- 新しいモジュールを挿入する
- 「挿入」メニューから「モジュール」を選択します。
- 下記のVBAコードを入力する
- コピーしたコードをモジュールウィンドウに貼り付けます。
- コードを実行する
- 画面上の▶️もしくはF5キーを押す
Sub InsertCheckBoxes()
Dim ws As Worksheet
Dim chkBox As CheckBox
Dim cell As Range
Dim i As Integer
Set ws = ActiveSheet
' チェックボックスを配置するセル範囲を指定
For i = 2 To 1000
Set cell = ws.Cells(i, 2)
Set chkBox = ws.CheckBoxes.Add(cell.Left + 8, cell.Top, cell.Width, cell.Height)
With chkBox
.LinkedCell = cell.Address
.Caption = ""
.Name = "CheckBox" & i
End With
' セルの書式を;;;に設定して値を非表示にする
cell.NumberFormat = ";;;"
Next i
End Sub
今回はB2からB1000までチェックボックスを作る形です。
Set chkBox = ws.CheckBoxes.Add(cell.Left + 8, cell.Top, cell.Width -12, cell.Height)
の部分でチェックボックスの位置や大きさを調整しましょう
今回は、セルの左上端から8ピクセル右に、大きさはセルの大きさより12ピクセル幅を狭く、という形です。
また、セルに「TRUE」や「FALSE」が表示されると見にくいので、書式を「;;;」(非表示)となるようにしています。
まとめ
![](https://rakura.net/wp-content/uploads/2024/03/teamwork-3213924_1280-1024x646.jpg)
一度実行すれば用はなくなるので、このコードは削除してしまって、マクロ付きエクセルとして保存する必要もありません。(拡張子は.xlsxのままでOK)
VBA使いこなせると、業務は非常に楽になります。
私も勉強を続けます。