この記事で分かること
・実務で使いやすいチェックボックスの作り方
・フォームコントロールを使わない管理方法
・VBAでチェックをON/OFFする方法
Excelにはチェックボックス機能があります。
しかし実務ではフォームコントロールを使わずに管理する場合もあります。
この記事では、セルをクリックするだけでチェックをON/OFFできる実務向けの方法を解説します。
結論
・セルには0と1を保存する
・表示形式で☐と☑を表示する
・VBAでクリック時に0と1を切り替える
・集計や転記処理が簡単になる
・実務の管理表で使いやすい
なぜこの方法を使うのか
Excelのチェックボックスは便利ですが、大量に配置すると管理が大変になります。
実務では、
・0=未チェック
・1=チェック済み
として管理し、表示だけを変更する方法がよく使われます。
見た目はチェックボックスですが、中身は数値なので集計や転記が簡単になります。
手順
Step1 表示形式を設定する
チェックボックスとして利用するセルを選択します。(今回はセルC9)
右クリック → セルの書式設定を開きます。
表示形式 → ユーザー定義を選択します。
種類に以下を入力します。
[=1]"☑";[=0]"☐"
設定すると、
・0 → ☐
・1 → ☑
と表示されます。

Step2 VBA画面を開く
Excelで Alt + F11 を押します。
VBE(Visual Basic Editor)を開きます。
Step3 対象シートを開く
左側のプロジェクトエクスプローラーから対象シートをダブルクリックします。
例
・案件入力フォーム
など

Step4 コードを貼り付ける
対象シートへ以下のコードを貼り付けます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$C$9" Then Exit Sub
Application.EnableEvents = False
If Target.Value = "0" Or Target.Value = "" Then
Target.Value = "1"
Else
Target.Value = "0"
End If
Application.EnableEvents = True
End Sub
Step5 動作確認をする
Excelへ戻ります。
C9セルをクリックすると、
☐ ⇔ ☑
が切り替わります。
この方法のメリット
集計しやすい
中身は数値なのでCOUNTIFなどで集計できます。
VBAで判定しやすい
チェック済みだけを簡単に抽出できます。
シートが重くなりにくい
フォームコントロールを大量に配置する必要がありません。
転記処理に利用しやすい
チェック済みデータだけを別シートへ転記できます。
よくあるトラブル
チェックが切り替わらない
原因
コードを標準モジュールへ貼り付けている
解決方法
対象シートへ貼り付ける
☑と☐が表示されない
原因
表示形式が設定されていない
解決方法
ユーザー定義の表示形式を設定する
他のセルで使えない
原因
C9セルのみ対象になっている
解決方法
以下の部分を変更する
If Target.Address <> "$C$9" Then Exit Sub
次回の記事につながるポイント
今回の方法では、
・0=未チェック
・1=チェック済み
としてデータを管理しています。
そのためVBAではチェック済みデータだけを簡単に判定できます。
次回は、チェックが入っているデータだけを2つのシートへ転記する方法を解説します。
関連するガイド記事
▶ VBAとは何か
▶ VBAの始め方
▶ VBAの実行方法
関連コード記事
▶ VBAで平均値を計算するコード
まとめ
実務では見た目だけチェックボックスにし、中身を0と1で管理する方法がよく使われます。
集計や転記との相性も良く、管理表を作る際に便利なテクニックです。

コメント