スポンサーリンク

Excelマクロでチェックボックスを作る(読み取る)方法

VBA

チェックボックスを作ってマクロで読み込み、処理を実行することができます。

チェックボックスの実行例

チェックボックスを作る(読み取る)方法は以下の2つです。

①の方が簡単ですが、②には拡張性が大きいメリットがあります。

ちなみに、チェックボックスは複数の選択肢を選べます。
1個だけチェックをつけるのはラジオボタン(オプションボタン)を使いましょう。
>>Excelマクロでラジオボタンを作る方法

“挿入”タグからチェックボックスを作成する方法

チェックボックスを作る

“開発”タブのすぐ下にある”挿入”を押してみましょう。

ユーザーフォームを挿入する図

下から2行目にチェックボックスがあるので選択してください。
ドラッグして大きさを決めると、チェックボックスができます。

チャックボックスを描画する図

チェックボックスにプログラムを入れる

チェックボックスを作ると、”開発”タブの”デザインモード”が自動的にONになります。

デザインモードを選択する図

デザインモードがONだと文字やフォントを編集可能です。

ON :編集可能
OFF:編集不可(チェックを入れるか外すだけ)

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)の左下で書式設定ができます。

ユーザーフォームの書式を変える欄

例えば、チェックボックスに表記する文字やフォントを変えられます。

Caption:表記文字
Font:フォント種類
TextAlign:文字寄せ方向

ボックスの□自体の大きさは変更できません。

メインプログラムとの連携

チェックの有無をメインプログラム(標準モジュール)と連携させましょう。
以下のようにデータが入っているとします。

データの入力例

“合計”と”平均”と”最大”のチェックボックスを作りましょう。

チャックボックスを描画した後の図

”合計”のボックスを作って他はコピペすると簡単です。
チェックを入れた条件に合わせてプログラムを分岐させましょう。

チェックボックスのプログラム

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でflagを定義するコード

“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

これを実行すると、ユーザーフォームのプログラムに移行します。

チェックボックスの実行例

チェックを入れて”計算”ボタンを押すと、選択した項目に合わせて結果を出してくれるはずです。

まとめ

今回はチェックボックスを使ったプログラムを紹介しました。
できるだけシンプルな方法が好きな方は、①の”挿入”から作る方法にしましょう。
どんどん機能を足していきたい人には、②のユーザーフォームがおススメです。

コメント

タイトルとURLをコピーしました