アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA初心者です。
現在2つのマクロがあります。

イメージとしては、
コンボボックスのようなドロップダウンリストから、
1つのマクロを選択したら、そのマクロを実行できるというものです。
(※2つ同時とか、2つ連続して、マクロの実行と言う意味ではありません)

今後マクロが増えることも加味して、
・フォームでもActivXでも、
・コンボボックスでもボタンでもリストボックスでも、
方法は問わないので、出来る方法があれば教えて頂きたいです。

色々検索してみましたが探しきれなかったので、宜しくお願いします。

A 回答 (3件)

あらっ、ゴメンナサイ。

application.runの行も直してたのね。

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

この回答への補足

ありがとうございます。

今日は遅いので、明日もう一度やってみます。

また分からなければ質問させて頂きますので、
その際は、宜しくお願いします。

補足日時:2012/07/18 02:38
    • good
    • 0

まず。

回答で寄せられた手順の「その通りに」実施して、確かに実現できることを確認してください。

次に。上手くいかないなら、あなたが実際にやったこと(=実際に書いて動かなかったマクロ)を、手抜きせず漏れなく情報提供するようにしてみて下さい。




もう少し放置しておけば。
寄せられた回答マクロが何やってるのかキチンと理解をしようとしていれば、遠からずご自分でも気が付いたハズですが。

ここが:
application.run "Module1."&range("A1")

こうでしょ:
application.run "Module1."&range("B3")


「ほかの方法(コンボボックスでもリストボックスでもコマンドボタンでも)」でも全く同じとお話ししたのは、正にこの部分です。
「複数マクロの選択実行方法を教えて下さい」の回答画像2
    • good
    • 0

作成例:


任意のセル(仮に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

を用意しておくという意味ですよ?

この回答への補足

早速の回答、ありがとうございます。

書いて頂いたのを貼りつけてみたんですが、
やり方がいけないのか、うまくいきません。

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でも使えるようにもしたいのですが・・・。

宜しくお願い致します。

補足日時:2012/07/18 00:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!