Excel VBA実装例|セル選択でチェックボックス用のシェイプを自動表示(EventSelectChangeShowCheckBox)
- yuji fukami
- 1 分前
- 読了時間: 3分

Excelでチェック項目を入力したい場面って多いですよね。でも「□A □B □C」のようなチェック入力をセルに持たせると、編集が地味に面倒です。
そこで今回は、セルをクリックすると、そのセルの下にチェック項目一覧(図形)が自動表示される入力補助UIを、Excel VBAで実装してみます。
実際の動き
この動画の実装では、次のような動きになります。
「□/■」を含むセルをクリックすると→ そのセルの下側に、チェック項目の図形(ボタン)が自動生成されて表示される
図形をクリックすると→ 「□ ↔ ■」が切り替わり、セルの文字列も自動で更新される
動画を見たら一瞬で理解できる系のUIですが、言葉にすると「セルを編集せず、図形を押すだけでチェック入力ができる仕組み」です。
これが便利になる場面
この仕組みは、次のようなケースで特に便利です。
日報・点検表・チェックリストなど、入力担当者が多いシート
「選択肢のON/OFF」を素早く入力してもらいたいシート
セルに直接入力させると、書式崩れや誤入力が起きやすいシート
セルをダブルクリックして編集モードに入らなくても、“押すだけ”で入力できるので、現場での入力ストレスがかなり減ります。
実装のポイント:ワークシート側は「1行」だけでOK
この仕組みの肝は、ワークシートのイベント(SelectionChange)で「セル選択が変わった瞬間に、チェックUIを表示する処理」を呼ぶことです。
実際のワークシートのコードウィンドウに入れるのは、下記のようなたった1行です。
やっていることはシンプルで、**「セルが選択された瞬間(Target)」**を受け取り、そのセルにチェック項目(□/■)が含まれている場合だけ、セル直下に“押せるチェックUI(図形)”を自動生成して表示します。
つまり、ワークシート側では「イベントで呼ぶ」だけ。UI生成・削除・クリックでON/OFF・セルへの書き戻しは、すべて EventSelectChangeShowCheckBox 側で完結しています。
ソースコード(チェックUI生成+クリックでON/OFF)
ここから先は、実際に動かすためのメイン処理です。
チェックUIの生成と、図形クリックによるON/OFF切替(EventSelectChangeShowCheckBox)をまとめています。
このコードを「標準モジュール」に記述しておけば、あとはワークシート側で SelectionChange から呼ぶだけでOKです。
上記のとおり、ワークシートのコードウィンドウに1行書くだけで、動画のような動きが再現できます。
ソースコード(EventSelectChangeShowCheckBox)の解説
このコードは、ワークシートの SelectionChange イベントから「選択セル(Target)」を受け取り、セル内に □ / ■ が含まれている場合だけ、セル直下に“押せるチェックUI(図形)”を自動生成して表示する仕組みです。逆に、□ / ■ が含まれていないセルを選択した場合は、表示中のチェック図形を自動的に削除して、UIが残り続けないようにしています。
チェックUIの描画は、選択セルを基準にして行います。具体的には、高さ・隙間(Gap)・フォントサイズ・図形の幅などをパラメータとしてコード内でまとめて定義し、その設定に合わせて角丸のチェックボックス図形を縦に並べて作図します。色(背景色や文字色)も同様にまとめて指定しているため、見た目の調整はこのパラメータ部分を触るだけで対応できます。
また、作成した各チェックボックス図形には OnAction を設定し、クリック時に別プロシージャ OnActionCheckBoxShape が呼ばれるようにしています。これにより、図形を押すだけで □ ↔ ■ の切り替え(ON/OFF)が実行され、クリック操作がそのまま入力操作になるUIになります。
最後に、クリックで更新された各図形の状態を集計し、連結した文字列として 元のセルに自動反映します。つまり「セルを編集して入力する」のではなく、図形をクリックしてチェックを切り替えるだけで、セルの値が常に同期されるのがこの仕組みの狙いです。


