| すぐマク YNxv98b2 | Home | Search | Contents | Gallery | Introduction | Service | Support | What's New! |
|
チェックボックスで複数項目を選択できないが? (Clickイベントが発生する場合は?) |
|
|
|||||
|
まだ、VBAをはじめて間もないので、ちんぷんかんぷんなんで、ちょっと教えてほしいです。 ユーザーフォームでチェックボックスで複数の項目を選択して、選んだ範囲を印刷したいのですが、うまくいきません。 Private Sub CheckBox表1_Click() If CheckBox表1 = True Then 表1 = true End Subのように組み立ててるのですが、チェックしていなくてもTRUEの動作が実行されてしまうのです。Clickだからですか? FAQの 「チェックボックスの選択結果を調べるには?」を参考にしてトライしてみたら、うまくできたと思ったのですが、複数選択が できず、最初に条件が満たされたところでStopしてしまうんで・・・ 良い方法おねがいします。 |
|
|||||||||||||||||||||||||||||||
|
あなたが気づいているとおり、チェックボックスの「Clickイベント」を使った方法では、当然のこととして、チェックボックスをクリックすると、すぐにマクロが実行されてしまいます。
あなたが作ったユーザーフォームのレイアウトが不明のため、「チェックしていなくても……実行されてしまう」ことの原因が私にはわかりません。下表を参考にして考えてみてください。 Clickイベントが発生する場合は、Excelのヘルプによりますと、次の 2つの場合のいずれかです。
Clickイベントが発生するコントロールは、次の2つに分類されると説明されています。
そして、具体的な操作例は、下表のとおりです。
FAQの 「チェックボックスの選択結果を調べるには?」を参考にされたとのことですが、
そこでは、チェックボックスとオプションボタンをそれぞれのフレームで囲ってあります。ご存知と思いますがフレームで囲んだ目的は、それぞれのフレームの中から 1つしか選択できなくするためです。 その例では、1つのユーザーフォームの中で 2つの項目(月と課)を選択したかったので、2つのフレームを設けて、かつ、「印刷」ボタンが 押されるとマクロが実行されるように組んであります。 言い換えると「Clickイベント」で実行されるマクロを使っているのですが、チェックボックスまたはオプションボタンがクリックされたときではなくて、 コマンドボタンが押されたときに発生する「Clickイベント」のマクロとして組んでいます。 よって、あなたが作りたい複数項目の選択が、印刷範囲の左上端セル、右下端セルを選択するという意味ならば、 そのサンプルマクロの 「Private Sub チェックボックスの選択結果を調べる()」のコーディングを、左上端セルを設定するように、 「Private Sub オプションボタンの選択結果を調べる()」を右下端セルを設定するように改造して、 「Private Sub CommandButton1_Click()」の中で、印刷範囲を設定してから印刷指示するように変更すれば、上手くいくと思います。 頑張って改造してみましょう。 サンプルブックのダウンロードは ここをクリック (YNxv98b_checkbox.xls 67KB) ※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。 |
|||||||||||||||||||||||||||||||
| http://www.geocities.jp/happy_ngi/ | Home | Contents | Gallery | Introduction | Service | Support | What's New! |