Excel VBAで複数のチェックボックスを作成するときはないでしょうか。
たとえば作成したタスクリストのステータス確認でチェックボックスを利用するなどが該当するかと思います。
けど、そんな中で悩むことは、
・チェックボックスのテキストレイヤーのサイズ調整が面倒。
・VBAで効率的に行いたいがやり方がわからない。
ですよね。
今回はそんなお悩みを解決する
・VBAで複数のチェックボックスを作成する方法
・VBAでチェックボックスの表示名を指定した上で作成する方法
についてまとめます!
もくじ
Excel でチェックボックスを作成する基本操作
Excel でチェックボックスを作成する基本操作について説明をします。
VBAで使うフォームコントロールのチェックボックスを選択し、オブジェクトとしてシートへ挿入していきます。
![Excel でチェックボックスを作成する基本操作](https://extan.jp/wp-content/uploads/2021/07/070621_1456_5.png)
[開発]タブからチェックボックスオブジェクトを挿入する
[開発]タブの[挿入]ボタンをクリックします。
「フォームコントロール」の「チェックボックス」をクリックします。
![タカヒロ](/wp-content/uploads/2020/11/taka_kao.gif)
チェックボックスのテキストレイヤーのサイズを調整する
挿入したチェックボックスのテキストレイヤーを文字が表示されるサイズまで広げます。
![チェックボックスのテキストレイヤー](https://extan.jp/wp-content/uploads/2021/07/070621_1456_3.png)
![チェックボックスのテキストレイヤー](https://extan.jp/wp-content/uploads/2021/07/070621_1456_4.png)
配置した位置も必要に応じて調整をしていきます。
そして項目数分作業を繰り返します。
はい、完成です。
![チェックボックスのテキストレイヤー調整完了](https://extan.jp/wp-content/uploads/2021/07/070621_1456_5.png)
![タカヒロ](/wp-content/uploads/2020/11/taka_kao.gif)
手作業ですから仕方ないところです。
VBAで複数のチェックボックスを作成する
次はこれまで手動で行ってきたチェックボックスの作成と配置、サイズ調整をVBAで一度に処理していきます。
複数のチェックボックスを作成するVBA
複数のチェックボックスを作成するVBAは以下となります。
Sub 複数のチェックボックスを作成する()
Dim objCell As Object
'選択した範囲分のオブジェクトを取得します
For Each objCell In Selection
With objCell
'選択したセルの位置へチェックボックスを配置し、セルのサイズに調整します。
ActiveSheet.CheckBoxes.Add(.Left, .Top, .Width, .Height).Select
End With
Next
End Sub
VBAの実行結果
VBAを実行する前に挿入したいセルを選択します。
![セルを選択](https://extan.jp/wp-content/uploads/2021/07/070621_1456_6.png)
VBAを実行しましょう。
マクロのメニューから「複数のチェックボックスを作成する」を選択します。
![タカヒロ](/wp-content/uploads/2020/11/taka_kao.gif)
一瞬でできましたね!
![チェックボックス作成完了](https://extan.jp/wp-content/uploads/2021/07/070621_1456_7.png)
サイズも位置もC列のセルピッタリにつくられています!
![チェックボックスサイズ調整完了](https://extan.jp/wp-content/uploads/2021/07/070621_1456_8.png)
![タカヒロ](/wp-content/uploads/2020/11/taka_kao.gif)
VBAでチェックボックスの表示名を指定した上で作成する
チェックボックス内にあるテキストは作成時に自動で入ってしまいます。
別の表示名にしたり、表示名自体入れないでおきたいときがあるかと思いますので、
VBAでその処理を追加したいと思います。
コードは以下の通りで、表示名を”チェック”にしています。
Sub 複数のチェックボックスを作成する_表示名指定()
Dim objCell As Object
'選択した範囲分のオブジェクトを取得します
For Each objCell In Selection
With objCell
'選択したセルの位置へチェックボックスを配置し、セルのサイズに調整します。
ActiveSheet.CheckBoxes.Add(.Left, .Top, .Width, .Height).Select
Selection.Characters.Text = "チェック"
End With
Next
End Sub
では実行してみましょう。
![チェックボックス表示名調整完了](https://extan.jp/wp-content/uploads/2021/07/070721_0418_1.png)
表示名が”チェック”に統一されましたね。
チェックボックスの表示名を非表示にする
表示名を非表示にしたい場合は、「チェック」を外してください。
複数のチェックボックスを作成するVBAの説明
今回のVBAは非常にシンプルです。
選択したセルの情報を取得し、それぞれのセルの位置にチェックボックスを配置し、セルの横幅、縦幅にチェックボックスのテキストレイヤーのサイズを調整する処理となります。
選択した範囲分のオブジェクトを取得します。
選択したセルの位置へチェックボックスを配置し、セルのサイズに調整します。
チェックボックスプロパティのAddメソッドで追加しています。構文は以下の通りです。
追加処理のチェックボックスの表示名を変更する箇所については
で実現しています。
選択したCharacters.Textプロパティでテキストの中身を指定しています。
VBAの実装手順
実装手順は以下の通りです。
今回はExcel側にこのVBAを実装します。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
![](https://extan.jp/wp-content/uploads/2019/05/050919_1542_VBAFunctio2.png)
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
※完了メッセージやステータス管理など必要に応じて実装してもらえばと思います。
さいごに
いかがでしょうか。
今回は、
・VBAで複数のチェックボックスを作成する方法
・VBAでチェックボックスの表示名を指定した上で作成する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す