• ベストアンサー

セルへの入力により「実行するマクロを選べる」ような仕組みは・・・

毎度、お世話様です。タイトルの件ですが 【状況】 単純なものですがマクロが50個以上になってきました。 オブジェクトに登録すると「シートがオブジェクトだらけ」になってしまいます。 【やりたいこと】 例えばあるセルに「001」と入力しマクロを実行すると「Sub 自動001()」が実行 されるようにしたいのですが、可能なものでしょうか? 私はaltF8で選んでいるのですが、他人にも分かりやすい方法を模索中です。 どなたかよろしくお願いします(ponta_024)

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> 例えばあるセルに「001」と入力しマクロを実行すると「Sub 自動001()」が実行 > されるようにしたいのですが、可能なものでしょうか? Sub 自動001()は標準モジュールにあるんですね? シートのchangeイベントを利用したらどうでしょう? 仮に、A1セルに001を入力するなら、A1セルの書式を「文字列」としておき、シートのモジュールに、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Target.Value = "" Then Exit Sub Application.Run "自動" & Target.Value End Sub とやってみてください。

ponta_024
質問者

お礼

merlionXX様 早速ありがとうございます。 第一段階はOKでした!エンター押した瞬間に実行されました。感激です・・・。 第一段階とい言いますのは、以前このサイトで「電話番号を入力すると別シートの名前・住所が自動表示される」 というマクロをいただきまして、Private Sub Worksheet_Changeがすでに存在しています。(名前が不正ですと出ました) 私としては「入力セルを別シートに作り誘導する」形でもかまいませんので問題はありませんが、 別の解決方法などありましたら教授ください。よろしくお願いします(ponta_024)

ponta_024
質問者

補足

merlionXX様 追加報告です 今回の「Private Sub Worksheet_Change」の意味が分かり 関連箇所について道が開けてきました。うまく説明できませんが 1、顧客検索に対しては「検索開始」ボタンを設け 2、今回頂いた記述に対しては「本シート上で自動実行」 させることが出来ました。 まずは一安心です。引き続き研究させて頂きます(ponta_024)

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

merlionXXです。 うまくいってよかったですね。 Private Sub Worksheet_Change(ByVal Target As Range)をふたつ使いたい場合、つまりシートのチェンジイベントで2つのことをさせたいばあいはこんなやりかたもありますのでご参考まで。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" And Target.Address <> "$B$1" Then Exit Sub 'A1かB1への入力以外は終了 If Target.Value = "" Then Exit Sub '空白の入力なら終了 Select Case Target.Address '入力セルにより選択 Case "$A$1" 'A1の場合 Application.Run "自動" & Target.Value Case "$B$1" 'B1の場合 MsgBox "メッセージのかわりに$B$1に入力時のマクロを実行させることも可能です。" End Select End Sub

ponta_024
質問者

お礼

merlionXX様 返答遅くなりました。 ご丁寧にありがとうございます。参考資料は先々のために 保存させて頂きました。 初心者のため、丸々「作成依頼」になっておりますが これからもよろしくお願いいたします(ponta_024)

関連するQ&A

専門家に質問してみよう