こんばんは!今回は、Excelのチェックボックスをクリックすると動くマクロのマクロサンプルです。とある日、チェックボックスを操作するVBAマクロを作っていると…
という状況に陥りました。
- チェックボックスクリック時のマクロを追加するにはどうすれば?
- チェックボックスをクリックしても処理が動かない・エラーになる
- チェックボックスのONとOFFした時で処理を分けるには?
上記のような同じ疑問を持たれた方の参考になれば幸いです。それでは、いってみましょう!
事前に:Excelはチェックボックスは2種類ある
Excelでのチェックボックスは以下の2種類あります。
- フォームコントロール
- ActiveXコントロール
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」が返却されます。
メッセージボックスで表示させてみた時の例が以下の画像です。
チェックボックスON/OFFで処理を変えるマクロサンプル
チェックボックスのON/OFFで処理を変えるマクロサンプルを紹介します。フォームコントロールのチェックボックスではxlOn/xlOFF(または1/-4146の返却値)を使って判定します。
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種類があり、扱うコントロールの種類によってマクロの書き方も変えなければならないということに気付かず、「うまくいかないな~」と悩んでしまったので、記事にしてみました。
同じような疑問を持たれた方の参考になれば幸いです。それでは、また!