- ベストアンサー
excelのマクロ選択用マクロ
お世話になります。 excelで分からない事があるので答えていただけたら幸いです。 質問の内容ですが、 同じシート内に、A,B,C,D,Eのマクロがあります。 これらのマクロを,プルダウンから選んで実行する為のマクロを作りたいのですが、可能でしょうか? よろしくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 ComboBox (名前はComboBox1)を設けて、以下の、EntryCombo(Auto_Openなどに設置) のように登録しておけば、動きます。ただし、こんなマクロは、ナンセンスだというのは言うまでもありません。マクロというものは、一定の時間を使い作業するものですから、ComboBox 等のドロップダウンのように速い動きには相応しくありません。マクロは基本的には不可逆ですから、確実な作業の意図を持って作動させるという意味を持たせなくてはなりません。したがって、マクロを設置するのは、コマンドボタンが最適です。 A,B,CC,D,E のそれぞれのマクロは、標準モジュールにおいてあります。 Private Sub ComboBox1_Change() Application.Run ComboBox1.Value End Sub Sub EntryCombo() 'Cという名称のマクロは、使えませんから、CCにします。 For Each v In Array("A", "B", "CC", "D", "E") ComboBox1.AddItem v Next v End Sub たぶん、「いじらず」という言葉から、#2様のアドバイスが理解できていないような気がします。「いじる」とか「いじらない」という範疇にはないように思います。 >でも出来る事ならツールバーはいじらずにおきたいので、他に方法は無いでしょうか?? #2様の考え方は、私も経験的にベストです。ツールバーは、ツールバーの中で処理できます。一種のコンテナの役目をしますから、別のPCに移しやすいし、ブックが変わっても使えます。 簡単にユーザー設定のツールバーは出来ます。必要なければ、ツールバーをオフにすると、そのツールバーだけ出てきません。何度もマクロを失ったりした失敗から、やっと今のスタイルに落ち着きました。(Excel 2007 では、残念ながら、別の格好になってしまいます。) #1様のアドバイスは、入力規則から実行する方法で、私には、すぐに意味が分かります。しかし、その意味がご理解出来ていないようです。元々無理な相談をあえて実行する方法ですから、そうしたイレギュラーな方法は、かなり難しいのではないでしょうか。
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >こちらのマクロは、ユーザーフォームのコンボボックスを使えば良いのでしょうか?? コンボボックスは、どのコントロールでもよいと思います。 ただ、ユーザーフォームのコンボボックスでは、もったいないというか、わざわざユーザーフォームを作ることもないでしょう。 >やらなくてはいけなくなってしまったのです。 他の方の方法でもよいと思いますが・・・。しなくてはならない事情というものは、こちらには伝わってこないので、#3様の「話が噛み合わない」ということになるのだろうと思います。 他の方のアドバイスは、それぞれ一家言の理屈が通っています。 理屈や論理を飛躍してまで、人は回答するようには出来ていないとも言えますね。それは、また逆も真ですが。
お礼
わかりました。 ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
#4の修正 #1様に誤解されそうな文章ですので、訂正します。 #元々無理な相談をあえて実行する方法ですから、そうしたイレギュラーな方法は、かなり難しいのではないでしょうか。 元々無理な相談をあえて実行する方法ですから、ドロップダウンで設定するような方法はイレギュラーですから、ご自身が設定するのは、かなり難しいのではないでしょうか。
- marbin
- ベストアンサー率27% (636/2290)
話が噛み合わないので確認なのですが、 >同じシート内に、A,B,C,D,Eのマクロがあります。 ここでシートといっているのは、実はブックのことではないですか? てっきり入力規則のリストボックスから選択したものによって実行する マクロを変えたい、と読めたものですから。 >プルダウンから選んで実行する これは入力規則のドロップダウンリストのことでしょうか? フォームのコンボボックスでしょうか? コントロールツールボックスのコンボボックスでしょうか? ユーザーフォームのコンボボックスでしょうか? はたまたコンボボックスではなく、リストボックスのことでしょうか?
補足
返信ありがとうございます。 やっと上記マクロの意味がある程度わかりました。 マクロは最近触り始めたばっかりなので・・・ 申し訳ありません。 marbinさんが理解された様に、入力規則のリストボックスで構わないです。あとブックではなくシートです。 マクロを実行しようとすると、Call testAの部分で 「コンパイルエラー SubまたはFunctionが定義されていません。」 と出ます。 どうすれば良いのでしょうか??
- noah7150
- ベストアンサー率46% (116/251)
ツールバーを利用したほうが早いかも ツール->ユーザー設定 コマンドタブの分類一覧一番最後の新しいメニューをドラッグしてツールバーに配置 出来ればユーザーツールバーを作ってそこに配置したほうが良いかも でもユーザーツールバーにするならブルダウンからせずとも並べてもかまわないかな? ツールバータブの添付にすれば作成ブックにツールバーを添付できるので他マシンに持っていって使えます。
補足
回答ありがとうございます。 これも一つの方法ですね。 でも出来る事ならツールバーはいじらずにおきたいので、他に方法は無いでしょうか??
- marbin
- ベストアンサー率27% (636/2290)
入力規則のリストの選択は選択したものが前回と同じでも シートのChangeイベントで捕捉できます。 で、Select Case で条件分岐します。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Select Case Target.Value Case "A" Call testA Case "B" CalltestB End Select End Sub
補足
すみません。 どうすればマクロが実行されるのでしょうか? マクロを登録したボタンを押すと、実行されるようにしたいのですが・・・
補足
回答ありがとうございます。 Wendy02様の言う事ももっともだと思うのですが、やらなくてはいけなくなってしまったのです。 こちらのマクロは、ユーザーフォームのコンボボックスを使えば良いのでしょうか??