プチIT化 PR

VBAチェックボックスをクリックすると動くマクロ(フォームコントロール)

記事内に商品プロモーションを含む場合があります。
当サイトは、アフィリエイト広告を利用しています。

こんばんは!今回は、Excelのチェックボックスをクリックすると動くマクロのマクロサンプルです。とある日、チェックボックスを操作するVBAマクロを作っていると…

悩める人
悩める人
なんだか上手く動かない(泣)

という状況に陥りました。

  • チェックボックスクリック時のマクロを追加するにはどうすれば?
  • チェックボックスをクリックしても処理が動かない・エラーになる
  • チェックボックスのONとOFFした時で処理を分けるには?

上記のような同じ疑問を持たれた方の参考になれば幸いです。それでは、いってみましょう!

事前に:Excelはチェックボックスは2種類ある

Excelでのチェックボックスは以下の2種類あります。

  • フォームコントロール
  • ActiveXコントロール

2つの細かな違いの説明は割愛しますが、マクロの書き方は違いました!

悩める人
悩める人
マクロで上手く動かないのは挿入したチェックボックスのコントロールを把握せずにマクロを作っていたから…!(私の話です)

ということで、今回はフォームコントロールのチェックボックスの①マクロの登録方法と②マクロサンプルを紹介していきます。

①チェックボックスのマクロの登録方法

フォームコントロールのチェックボックスをクリックした時のマクロを登録する方法は以下です。

  1. チェックボックスを右クリック > [マクロの登録]
  2. [新規作成]ボタン

これで、以下のようなチェックボックスがクリックされた時のプロシージャ―(subからEnd Subまでのところ)が出来上がります。

Sub チェック1_Click()
    ' ここに処理記載
End Sub

SubとEndSubの間にチェックボックスがクリックされた時の処理を入れていきますよ!(他にも登録方法はあるとは思いますが、今回はこの方法で。)

では、次章から入力するサンプルマクロを紹介していきます。

②チェックボックスのマクロサンプル

フォームコントロールのチェックボックス値取得するマクロサンプル

フォームコントロールがチェックON・OFFの時にどんな値が返却するかを確かめるマクロサンプルです。この返却値を知ることで「ON」の時は、「OFF」の時はという処理分が出来るようになります。

Worksheets("Sheet1").CheckBoxes("チェック 1").Value

※Sheet1の所には扱うシート名を、チェック 1の所には取得したいチェックボックスの名前を入れます。チェックボックスの名前は、チェックボックスを選択した時に、Excel左上のセルの名前が表示されている所で確認できます。

フォームコントロールでは、ONの場合は「1」が返却され、OFFの場合は「-4146」が返却されます。

ActiveXの場合はTrue/Falseが返却値となります。

メッセージボックスで表示させてみた時の例が以下の画像です。

チェックボックスON/OFFで処理を変えるマクロサンプル

チェックボックスのON/OFFで処理を変えるマクロサンプルを紹介します。フォームコントロールのチェックボックスではxlOn/xlOFF(または1/-4146の返却値)を使って判定します。

ActiveXコントロールの場合はTrue/Falseを判定値として扱います。
Sub チェック1_Click()
   
    ' チェックが入っているかどうかで処理を変更する
    ' ONの場合
    If Worksheets("Sheet1").CheckBoxes(1).Value = xlOn Then
        MsgBox ("ON")
    ' OFFの場合
    Else
        MsgBox ("OFF")
    End If

End Sub

※上記例ではSheet1という名前のシートのチェック 1という名前のチェックボックスがクリックされた時の操作の場合です。

チェックボックスの値を「Worksheets("Sheet1").CheckBoxes(1).Value」で取得。返却値が「xlOn(または1)」だったらチェックボックスがON、「xlOFF(または-4146)」だったらチェックボックスがOFFという処理をIF文で条件分けして記載しています。

さいごに

いかがだったでしょうか。

私自身、チェックボックスのマクロを作成しているときに、フォームコントロールとActiveXコントロールの2種類があり、扱うコントロールの種類によってマクロの書き方も変えなければならないということに気付かず、「うまくいかないな~」と悩んでしまったので、記事にしてみました。

同じような疑問を持たれた方の参考になれば幸いです。それでは、また!