VBAで実務用チェックボックスを作る方法|フォームコントロール不要

この記事で分かること

・実務で使いやすいチェックボックスの作り方

・フォームコントロールを使わない管理方法

・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で案件データを登録するコード

VBAで入力フォームを自動クリアするコード

▶ VBAで平均値を計算するコード

まとめ

実務では見た目だけチェックボックスにし、中身を0と1で管理する方法がよく使われます。

集計や転記との相性も良く、管理表を作る際に便利なテクニックです。

コメント