- ベストアンサー
エクセルのマクロでボタンのクリックで変数を設定する方法
- エクセルのマクロを使用して、ボタンのクリックで変数を設定する方法を解説します。
- ボタンには「印刷」と「プレビュー」のテキストが入っており、マクロ内でprintmode変数を設定することができます。
- ボタンの処理には、ボタンのクリックイベントを設定し、それぞれのボタンがクリックされた際にprintmode変数の値を設定する処理を追加する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Excelのバージョンを含め、いまいち判らない点が多いですが、 こんな感じでしょうか? Sub 特種印刷(printmode as value) printmode=1 Call 出来上がったマクロ(printmode) End Sub Sub 印刷プレビュー(printmode as value) printmode=0 Call 出来上がったマクロ(printmode) End Sub Sub 出来上がったマクロ(printmode as value) Select Case printmode Case printmode=0 ' Case printmode=1 ' Case els ' End Select End Sub 自作のボタンを右クリックしてマクロを定義すれば良いのかと思います。 自分で試していないので少々無責任な回答です。すみません。
その他の回答 (1)
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 なぜ、オートシェイプという特殊な方法で、マクロを起動させるのでしょうか。 オートシェイプは、何らかのトラブルが発生すると、隠れオブジェクトになりやすいので、長期間利用する場合は、ActiveX コントロールにしたほうがよいです。印刷されないように出来るのは、ActiveX コントロールの[コントロールの書式設定]でも変更可能です。 もちろん、オートシェイプに、マクロを設定させられるのはご存知でしょうけれども、すでにマクロを作っていて、2つのオートシェイプがあるのなら、それぞれに、別々のマクロを入れれば済むことだと思います。 もちろん、同じマクロをお使いになるのなら、どちらかから、起動したかは、Application.Caller で、選別はできますから、それで分岐は出来ますが、ご質問内容からして、そこまでする必要があるのでしょうか?何か、合点がいかないのです。 なお、ActiveX コントロールの場合は、マクロを共有する方法は、通常、クラスによるインスタンスが必要になってしまいます。 私のアドバイスは、もう少し、単純に設計を考えたほうがよいというだけです。もし余計な話をしているという印象でしたら、こちらは、無視して構いません。
補足
プログラムの構造はおかげでわかりましたが、ボタンをクリックするとサブプログラムへ行くようにするにはどうすればよいでしょうか?ボタン内のテキストとsubプログラム名を合わせたのですが、ボタンをクリックすると、書式設定などのボタンの編集モードに入ってしましました。