エクセルのマクロでボタンのクリックで変数を設定する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、ボタンのクリックで変数を設定する方法を解説します。
  • ボタンには「印刷」と「プレビュー」のテキストが入っており、マクロ内でprintmode変数を設定することができます。
  • ボタンの処理には、ボタンのクリックイベントを設定し、それぞれのボタンがクリックされた際にprintmode変数の値を設定する処理を追加する必要があります。
回答を見る
  • ベストアンサー

ボタンのクリックでマクロの変数を設定するには

エクセルのマクロで自分だけの特殊印刷と、そのプレビューを画面上のボタンで選択して実行したいのですが、どうすればよいでしょうか? ボタンはEXCELのオートシェイプを利用し、「印刷」と「プレビュー」のテキストを入れて作成済みです。また、特殊印刷と、プレビューのマクロそのものは出来て正常動作しています。問題は、その中の変数 printmode を「印刷」ボタンのクリックで 1 に設定し、「プレビュー」ボタンのクリックで 0 に設定して、その後選択した結果により記入したマクロを実行したのです。(case 文でprintmode の変数により分岐できるように既になっていますので、ボトンでprintmodeの値を設定すればよい) ボタンにそれぞれどんな処理を行えばprintmodeの値を設定でき、その後マクロへ自動的に行けるのでしょうか?ボタンの処理や、マクロに追加する記述を教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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 自作のボタンを右クリックしてマクロを定義すれば良いのかと思います。 自分で試していないので少々無責任な回答です。すみません。

greenhope
質問者

補足

プログラムの構造はおかげでわかりましたが、ボタンをクリックするとサブプログラムへ行くようにするにはどうすればよいでしょうか?ボタン内のテキストとsubプログラム名を合わせたのですが、ボタンをクリックすると、書式設定などのボタンの編集モードに入ってしましました。

その他の回答 (1)

回答No.2

こんにちは。 なぜ、オートシェイプという特殊な方法で、マクロを起動させるのでしょうか。 オートシェイプは、何らかのトラブルが発生すると、隠れオブジェクトになりやすいので、長期間利用する場合は、ActiveX コントロールにしたほうがよいです。印刷されないように出来るのは、ActiveX コントロールの[コントロールの書式設定]でも変更可能です。 もちろん、オートシェイプに、マクロを設定させられるのはご存知でしょうけれども、すでにマクロを作っていて、2つのオートシェイプがあるのなら、それぞれに、別々のマクロを入れれば済むことだと思います。 もちろん、同じマクロをお使いになるのなら、どちらかから、起動したかは、Application.Caller で、選別はできますから、それで分岐は出来ますが、ご質問内容からして、そこまでする必要があるのでしょうか?何か、合点がいかないのです。 なお、ActiveX コントロールの場合は、マクロを共有する方法は、通常、クラスによるインスタンスが必要になってしまいます。 私のアドバイスは、もう少し、単純に設計を考えたほうがよいというだけです。もし余計な話をしているという印象でしたら、こちらは、無視して構いません。

関連するQ&A

  • ボタンのクリックでマクロの変数を設定 その2 

    上記のタイトルで質問しましたが、補足が必要なので改めて質問します。 古い エクセル2000のバージョンです。エクセルのシート上にコマンドボタンを配置し、そこをクリックするとマクロを実行するようにしたいのですが、どうやったらコマンドボタンをエクセルのシート上に配置できるのでしょうか? ちなみにVBAの画面でユーザーフォームを作成し、そこへはコントロールからコマンドボタンをドラグして貼り付けることはできました。ただし、そのコマンドボタンをコピー(これは可能)しエクセルのシート上に貼り付けようとすると、「貼り付け」の所が薄い文字になっていて、貼り付けできません。 新バージョンのエクセルでは「開発者***」の所からできるようですが、エクセル2000ではどうやったらコマンドボタンをシート上に貼り付けできるのでしょうか? また貼り付けができたら、自動的にマクロのVBAのプログラム画面に sub commannd()  や endsub が追加されるのでしょうか?そこまでできれば、マクロの実質的な内容は既に完成しているので動作するのですが。よろしくお願いします。

  • エクセルで、マクロをボタンに埋め込むやり方

    エクセルでマクロは設定できたのですが ボタンを作って、そのボタンをクリックすると 「マクロを実行する」ということを設定する やり方がわかりません。 ツールバーのコントロールボックスでボタンを出すんですよね? そこからどうやるのか教えてください。 よろしくお願いいたします。

  • 変数が渡らない

    選択するための3つのボタンを作成し、それぞれ変数ansに値を格納しました。下記がそのActionScriptの例です。 ------------------------------- on(release){ ans=1; _root.nextFrame(); } ------------------------------- ボタンを押した後、別のレイヤーのフレームからMCを読み込みます。 しかし、ボタン内で格納した変数が読み込まれずundefined(未定義)となってしまいます。if文で分岐したいのですが出来ずに困っています。 ボタンをクリックすることで変数に格納した値を、ムービークリップのイベント内で読み込むことは可能でしょうか?

    • ベストアンサー
    • Flash
  • エクセルのマクロボタンで

    エクセル97を使っています。 マクロをボタンに割り当て、そこに印刷マークを表示させたいと思っています。 ツールのユーザー設定のマクロボタン(黄色いスマイルマーク)ではなく、オートシェイプまたはコントロールツールボックスのボタンにビットマップを張りつければいいと思ったのですが、印刷のビットマップ(?)はどこにあるのでしょうか? Accessではボタンにピクチャーが割り当てられるので、印刷ボタンもあるのですが、そのボタンの絵も実際のフォルダのどこにあるのか、検索しても出てきません。 あれは.bmpや.icoではないのでしょうか? 他PCでも見られるようにしたいので、ビットマップを自作することは考えていません。 よろしくお願いします。

  • EXCELマクロの外部から、マクロの中の変数の値を設定する方法について

    EXCELマクロの外部から、マクロの中の変数の値を設定する方法について教えて下さい。 どなたか詳しい方教えて頂けないでしょうか?。 マクロの先頭で、 ・普通にマクロを実行する時には、Flag = 0 ・デバッグをしたい時には、Flag = 1 に設定して、マクロの中でFlagの値によって条件分けをして実行したいのです。 でも、いちいちマクロを開いてFlagの値を変えたくありません。 また、内容は同じでFlag=0のマクロとFlag=1のマクロは用意したくありません。 なぜなら、片方のマクロで修正した内容をもう片方のマクロに反映させなければならず、 間違いの元になる可能性があるからです。 あと、対話式でFlagの値も設定したくありません。 キーの割り当ても検索していたのですが、マクロそのものの登録しか出来ないようですし、 困っています。 詳しい方がおられましたらご回答宜しくお願いします。

  • PHPでボタンをクリックすると変数が10増えるようにするには?

    PHPでボタンをクリックすると変数が10増えるようにするには? PHPについて、全くの初心者の者です。 幼稚な質問で恐縮ですが、PHPのソースの中に、 ボタンを作って、そのボタンをクリックすると、 変数$maxの値が10増えるようにするには、 どういうソースを書けば良いのでしょうか?

  • 【ExcelVBA】マクロボタンについて

    こんにちは。 Excel2003で作成したマクロ1をマクロボタン1に登録してシート上に配置しています。 これをExcel2013で開いて(互換モード)マクロボタン1をクリックしてマクロ1を実行すると、エラーは出ませんが、正しい結果が得られません。 マクロボタンからではなく、Alt+F8キーで表示されるマクロ一覧からマクロ1を選択して実行すると、正しい結果が得られますので、コードの記述には問題なさそうです。 上記のマクロとは別のマクロ2をマクロボタン2に登録して、マクロボタン1と同じシート上に配置していますが、こちらはボタンからの実行でも正しい結果が得られます。 試しに、フォームコントロールから新たにボタンを挿入し、マクロ1を登録して実行してみましたが、結果は同じでした。 また、互換モードではなくExcel2013で保存し直して(.xlsm)上記と同じことをしてみましたが、これも結果は同じでした。 何が原因として考えられるでしょうか? マクロをボタンに登録しないと絶対に困るというわけではないのですが、ボタンからの実行では正しい結果が得られないのが不思議です。 よろしくお願いします。

  • ボタンやグラフィック コントロールを使ってマクロを実行する

    エクセル2000でボタンやグラフィック コントロールを使ってマクロを実行しようと思っています。 マクロを記録した後、ボタンを作成し、選択した状態で、サイズ変更ハンドル上で右クリックすると、マクロの登録がショートメニューで表示されると書いてあるのですが、表示されません。 どうしてでしょうか。 どうしたら、マクロの登録ができるのでしょうか。教えてください。

  • マクロボタンの設定

    複数のシートをまたいで処理するマクロを作成しました。 「sheet1」「sheet2]「sheet3」を使用するとします。 マクロの記録は「sheet1」から開始したので、通常のマクロ実行は「sheet1」から行なわないとエラーが出ます。 このマクロにボタンを作るのは「sheet1」にしないと当然エラーなのですが、それ以外の「sheet2」にボタンを作って実行する方法はありますか?

  • コマンドボタンにマクロを登録させる方法

    エクセルでマクロを作成しました。マクロを実行させる為に「コントロールツールボックス」にある「コマンドボタン」で作ったボタンに登録をしたいのですがうまくいきません。 以前はコマンドボタンを作ったら、自動的に「マクロの登録」ダイアログボックスが出てきたのですが、何故か出なくなってしまいました。オートシェイプで作成したボタンなら、右クリックすると「マクロの登録」があるのですが、コマンドボタンを右クリックしても「マクロの登録」がありません。以前のように、自動的に「マクロの登録」ダイアログボックスを表示させる方法があったら教えてください。 また、ボタンをダブルクリックするとVBAが開いて以下のようなコードの記載がありますが、ここにコードを記載すればボタンをクリックしたときにマクロが実行されるのでしょうか?VBAはまったく解りませんので、どのように記載したらいいのかわかりません。実際に記入して教えてください。お願いします。マクロ名は、日本語で「結果一覧」としました。(「Private Sub CommandButton1_Click()」と「End Sub」の間に、マクロの記述部分をコピーして、貼り付けたら、ボタンをクリックしたときにマクロは実行できたのですが、もっと簡単にマクロ名を記述したら実行できるような気がするのですが、簡単に記述して実行できる方法があったら教えてください。) OSはWindows ME、Excelは2002 です。よろしくお願いします。 コマンドボタンをダブルクリックしたときのコードです。 Private Sub CommandButton1_Click() End Sub

専門家に質問してみよう