チェックボックスで複数項目を選択できないが?

(Clickイベントが発生する場合は?)
Question 24.1 Previous Next
まだ、VBAをはじめて間もないので、ちんぷんかんぷんなんで、ちょっと教えてほしいです。
ユーザーフォームでチェックボックスで複数の項目を選択して、選んだ範囲を印刷したいのですが、うまくいきません。
Private Sub CheckBox表1_Click()
   If CheckBox表1 = True Then 表1 = true
End Sub
のように組み立ててるのですが、チェックしていなくてもTRUEの動作が実行されてしまうのです。Clickだからですか?
FAQの 「
チェックボックスの選択結果を調べるには?」を参考にしてトライしてみたら、うまくできたと思ったのですが、複数選択が できず、最初に条件が満たされたところでStopしてしまうんで・・・ 良い方法おねがいします。
Answer   Copyright (C) 2000.1.12 永井善王
あなたが気づいているとおり、チェックボックスの「Clickイベント」を使った方法では、当然のこととして、チェックボックスをクリックすると、すぐにマクロが実行されてしまいます。 あなたが作ったユーザーフォームのレイアウトが不明のため、「チェックしていなくても……実行されてしまう」ことの原因が私にはわかりません。下表を参考にして考えてみてください。

Clickイベントが発生する場合は、Excelのヘルプによりますと、次の 2つの場合のいずれかです。
1 マウスでコントロールをクリックしたとき
2 1つ以上の値を持つコントロールの値を正確に選択したとき

Clickイベントが発生するコントロールは、次の2つに分類されると説明されています。
1 コマンドボタン
CommandButton
フレーム
Frame
イメージ
Image
ラベル
Label
スクロールバー
ScrollBar
スピンボタン
SpinButton
2 チェックボックス
CheckBox
コンボボックス
ComboBox
リストボックス
ListBox
マルチページ
MultiPage
タブストリップ
TabStrip
トグルボタン
ToggleButton
 オプションボタン(OptionButton)コントロールの Valueプロパティに真(True)が設定されているとき

そして、具体的な操作例は、下表のとおりです。
コントロールをクリックしたとき
コントロールに割り当てられているアクセスキーが押されたとき
フォーム上の何もない領域または、リストボックス以外の無効なコントロールがクリックされたとき
コマンドボタンがクリックされたとき
コマンドボタンがフォーカスを持っているときに Spaceキーが押されたとき
別のコマンドボタンがフォーカスを持っていない場合に限り、Defaultプロパティに真(True)が設定されているコマンドボタンが存在するフォーム上で、Enterキーが押されたとき
別のコマンドボタンがフォーカスを持っていない場合に限り、Cancelプロパティに真(True)が設定されているコマンドボタンが存在するフォーム上で、Escキーが押されたとき

ユーザーフォーム FAQの
チェックボックスの選択結果を調べるには?」を参考にされたとのことですが、 そこでは、チェックボックスとオプションボタンをそれぞれのフレームで囲ってあります。
ご存知と思いますがフレームで囲んだ目的は、それぞれのフレームの中から 1つしか選択できなくするためです。

その例では、1つのユーザーフォームの中で 2つの項目(月と課)を選択したかったので、2つのフレームを設けて、かつ、「印刷」ボタンが 押されるとマクロが実行されるように組んであります。

言い換えると「Clickイベント」で実行されるマクロを使っているのですが、チェックボックスまたはオプションボタンがクリックされたときではなくて、 コマンドボタンが押されたときに発生する「Clickイベント」のマクロとして組んでいます。

よって、あなたが作りたい複数項目の選択が、印刷範囲の左上端セル、右下端セルを選択するという意味ならば、 そのサンプルマクロの
「Private Sub チェックボックスの選択結果を調べる()」のコーディングを、左上端セルを設定するように、
「Private Sub オプションボタンの選択結果を調べる()」を右下端セルを設定するように改造して、
「Private Sub CommandButton1_Click()」の中で、印刷範囲を設定してから印刷指示するように変更すれば、上手くいくと思います。

頑張って改造してみましょう。

サンプルブックのダウンロードは ここをクリック  (YNxv98b_checkbox.xls 67KB)
※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。

Excel VBA Macro