チェックボックスを作ってマクロで読み込み、処理を実行することができます。
チェックボックスを作る(読み取る)方法は以下の2つです。
①の方が簡単ですが、②には拡張性が大きいメリットがあります。
ちなみに、チェックボックスは複数の選択肢を選べます。
1個だけチェックをつけるのはラジオボタン(オプションボタン)を使いましょう。
>>Excelマクロでラジオボタンを作る方法
“挿入”タグからチェックボックスを作成する方法
チェックボックスを作る
“開発”タブのすぐ下にある”挿入”を押してみましょう。
下から2行目にチェックボックスがあるので選択してください。
ドラッグして大きさを決めると、チェックボックスができます。
チェックボックスにプログラムを入れる
チェックボックスを作ると、”開発”タブの”デザインモード”が自動的にONになります。
デザインモードがONだと文字やフォントを編集可能です。
ONの状態でチェックボックスをダブルクリックしましょう。
“CheckBox1_Click”と書いてある通り、ここにはチェックを入れた時の処理を書きます。
Private Sub CheckBox1_Click()
MsgBox "chek"
End Sub
“check”という文字をメッセージ表示するプログラムにしました。
“デザインモード”をOFFにしてから、チェックを入れて確認してみましょう。
チェックが入っている or 入っていないを判断する
先ほどのプログラムの起動条件は”Click”でした。
これは、チェックを入れても外しても起動する状態です。
本当はチェックを入れたときにだけ実行するようにしたいので、if文で条件分岐をしましょう。
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
MsgBox "check"
Else
MsgBox "no check"
End If
End Sub
もしチェックが入っているなら、CheckBox1.ValueがTrueになっています。
このように、ValueがTrueかFalseかでチェックの有無を判断しましょう。
チェックボックスのデザインを編集する
プログラムを書く画面(VisualBasic)の左下で書式設定ができます。
例えば、チェックボックスに表記する文字やフォントを変えられます。
ボックスの□自体の大きさは変更できません。
メインプログラムとの連携
チェックの有無をメインプログラム(標準モジュール)と連携させましょう。
以下のようにデータが入っているとします。
“合計”と”平均”と”最大”のチェックボックスを作りましょう。
”合計”のボックスを作って他はコピペすると簡単です。
チェックを入れた条件に合わせてプログラムを分岐させましょう。
チェックボックスのプログラム
Private Sub CheckBox1_Click()
flag1 = CheckBox1.Value
End Sub
Private Sub CheckBox2_Click()
flag2 = CheckBox2.Value
End Sub
Private Sub CheckBox3_Click()
flag3 = CheckBox3.Value
End Sub
“合計”がCheckBox1、”平均”がCheckBox2、”最大”がCheckBox3に該当します。
それぞれチェックが入っていると、対応するflag1~3がTrueになります。
これでどのボックスにチェックが入っているかを受け取りましょう。
チェックボックスのプログラムを書く場所が見つからないんだけど。。。
という場合は、”デザインモード”をONにしてダブルクリックしましょう。
または、左端のリストにある”Sheet”をダブルクリックすれば出てきます。
標準モジュールのプログラム
Public flag1
Public flag2
Public flag3
Sub test()
Sum = 0
cnt = 0
Max = 0
For i = 2 To 11
Sum = Sum + Cells(i, 1)
cnt = cnt + 1
If Max < Cells(i, 1) Then
Max = Cells(i, 1)
End If
Next i
If flag1 Then
MsgBox Sum
End If
If flag2 Then
MsgBox Sum / cnt
End If
If flag3 Then
MsgBox Max
End If
End Sub
大事な部分は冒頭の”Public”です。
“Public flag1″で他のプログラムと変数flag1を共有できます。
つまり、チェックボックスのプログラムとflag1が同じだと宣言しています。
次にfor文で合計値とデータ数と最大値を計算しましょう。
最後のif文でflag1がTrueなら合計、flag2がTrueなら平均、flag3がTrueなら最大値を表示しています。
以上で描画したチェックボックスでプログラムを作成する方法は終わりです。
ユーザーフォームでチェックボックスを作成する方法
チェックボックスを作る
“挿入”から”ユーザーフォーム”をクリックします。
すると以下のようなウィンドウが現れるはずです。
チェックボックスがあるので選択して描画しましょう。
書式を変えるために左下のリストから”Caption”や”Font”を設定します。
この設定は”挿入”からチェックボックスを作成した時と同じ要領です。
これでボックスができたので、プログラムを作成しましょう。
プログラムを作成する
チェックボックスのプログラム
描画したチェックボックスをダブルクリックしてください。
すると以下のウィンドウが出てきます。
“CheckBox1_Click”なので、チェックボックスをクリックしたときのプログラムが書けます。
Private Sub CheckBox1_Click()
flag1 = CheckBox1.Value
MsgBox flag1
End Sub
もしチェックが入っているならTrue、入っていないならFalseが表示されるようにしました。
標準モジュールのプログラム
標準モジュールには、ユーザーフォームを呼び出すプログラムを書きます。
ユーザーフォームと標準モジュールを書く場所が違うので注意してください。
Sub test()
UserForm1.Show
End Sub
UserForm1.Showでユーザーフォームを表示します。
プログラムを起動するとチェックボックスが現れるので、クリックしてみましょう。
チェックを入れたらTrue、外したらFalseが表示されれば成功です。
フォームを閉じたければ×ボタンを押してください。
メインプログラムとの連携
先ほどと同じプログラムを、ユーザーフォームで作成しましょう。
チェックボックスを3つ作成します。これも”合計”をコピペすると簡単です。
そしてコマンドボタンを追加しましょう。
計算実行ボタンとして使います。
コマンドボタンをダブルクリックしてみましょう。
“ボタンをクリックしたときに起動するプログラム”が作れます。
Private Sub CommandButton1_Click()
flag1 = CheckBox1.Value
flag2 = CheckBox2.Value
flag3 = CheckBox3.Value
Sum = 0
cnt = 0
Max = 0
For i = 2 To 11
Sum = Sum + Cells(i, 1)
cnt = cnt + 1
If Max < Cells(i, 1) Then
Max = Cells(i, 1)
End If
Next i
Unload Me
If flag1 Then
MsgBox Sum
End If
If flag2 Then
MsgBox Sum / cnt
End If
If flag3 Then
MsgBox Max
End If
End Sub
①のプログラムとほとんど同じです。
途中にある”Unload Me”はユーザーフォームを閉じる命令です。(Xボタンを押すのと同じ)
標準モジュールのプログラムはさっきと同じです。
Sub test()
UserForm1.Show
End Sub
これを実行すると、ユーザーフォームのプログラムに移行します。
チェックを入れて”計算”ボタンを押すと、選択した項目に合わせて結果を出してくれるはずです。
まとめ
今回はチェックボックスを使ったプログラムを紹介しました。
できるだけシンプルな方法が好きな方は、①の”挿入”から作る方法にしましょう。
どんどん機能を足していきたい人には、②のユーザーフォームがおススメです。
コメント