• 締切済み

複数マクロの選択実行方法を教えて下さい

VBA初心者です。 現在2つのマクロがあります。 イメージとしては、 コンボボックスのようなドロップダウンリストから、 1つのマクロを選択したら、そのマクロを実行できるというものです。 (※2つ同時とか、2つ連続して、マクロの実行と言う意味ではありません) 今後マクロが増えることも加味して、 ・フォームでもActivXでも、 ・コンボボックスでもボタンでもリストボックスでも、 方法は問わないので、出来る方法があれば教えて頂きたいです。 色々検索してみましたが探しきれなかったので、宜しくお願いします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

あらっ、ゴメンナサイ。application.runの行も直してたのね。 んじゃますます、アナタが実際にやったことを漏れなく情報提供してもらわないと、「具体的に」どこを間違っているのか指摘なんてできませんデス。

ichigo999
質問者

補足

ありがとうございます。 今日は遅いので、明日もう一度やってみます。 また分からなければ質問させて頂きますので、 その際は、宜しくお願いします。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

まず。回答で寄せられた手順の「その通りに」実施して、確かに実現できることを確認してください。 次に。上手くいかないなら、あなたが実際にやったこと(=実際に書いて動かなかったマクロ)を、手抜きせず漏れなく情報提供するようにしてみて下さい。 もう少し放置しておけば。 寄せられた回答マクロが何やってるのかキチンと理解をしようとしていれば、遠からずご自分でも気が付いたハズですが。 ここが: application.run "Module1."&range("A1") こうでしょ: application.run "Module1."&range("B3") 「ほかの方法(コンボボックスでもリストボックスでもコマンドボタンでも)」でも全く同じとお話ししたのは、正にこの部分です。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

作成例: 任意のセル(仮にA1セル)に入力規則のリストから macro1,macro2,macro3 を選択できるようにする 標準モジュール(Module1)にそれぞれのマクロを用意しておく シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval target as excel.range) if target.address <> "$A$1" then exit sub on error resume next application.run "Module1."&range("A1") end sub ファイルメニューから終了してエクセルに戻り、A1セルでマクロ名を選ぶ。 何から起動するにしても、手順は殆ど同じです #参考 Module1に Sub Macro1() MsgBox "M1" End Sub Sub Macro2() MsgBox "M2" End Sub Sub Macro3() MsgBox "M3" End Sub を用意しておくという意味ですよ?

ichigo999
質問者

補足

早速の回答、ありがとうございます。 書いて頂いたのを貼りつけてみたんですが、 やり方がいけないのか、うまくいきません。 1.A1だと見にくかったので、B3とC3を結合させて、 下記の部分を変更しました。 (1)if target.address <> "$B$3" then exit sub (2)application.run "Module1."&range("B3") 2.#参考で書いて頂いたところがよく分からず、 各マクロのEnd Subの直前に、 (1)MsgBox "M1" (2)MsgBox "M2" と入れただけです。 すみませんが、 間違っている個所を、教えて頂けないでしょうか? ※Vistaで2007を使って作ってますが、 XPで2003、7で2010でも使えるようにもしたいのですが・・・。 宜しくお願い致します。

関連するQ&A