- ベストアンサー
ExcelVBAコードの実行について
- ExcelVBAを使用してsheet1のA2セルをアクティブにした際にメッセージボックスに「ここはA2です」と表示させたい。
- VBEを開いた状態でA2を選択してもマクロが実行されず、マクロ呼び出し画面が表示される。
- 目的はブックを開いた時から常に有効にしたい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
アナタが調べて書いてみたマクロは「イベントプロシジャ」と言って,所定のイベント(今回は「選択セル(セル範囲)が変更された」。他にも「セルに値を記入した/削除した」「シートをめくった」「ブックを開いた・閉じた」など)をエクセルが自動で拾って自動起動するマクロです。 イベントプロシジャは,拾いたいイベントに応じて「どのシートに書かないとダメか」キチンときまっているので,他のシートに書いてたら全然動きません。今回はどうやら上手く動いたと言うことは,手順は間違いなくできていたようです。 イベントプロシジャは,前述したように「イベントが起きたら(原則として)自動で起動してしまうマクロ」なので,逆にご質問のようにマクロのダイアログから選んで実行することはできません。 参考: マクロのダイアログで現れるマクロは,原則として sub macro1() end sub のように,マクロ名に続く( )の中が「空っぽである」ものだけが表示されます。 また,マクロ名に先立って private sub macro2() end sub のように記述していた場合も,やはり表示されません。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
>ブックを開いた」時からずっと有効にさせていたいのです この意味が判らない。 何を有効にしたいの?>MsgBox "ここはA2です"という表示ではない無いだろう。本件はイベントというプロシージャなんだが、意図が推測できないので、それを使うべきかどうか判断できない。 ブックを開いた後、何がしたい、またはどうなってほしいのか?Workbook_openなんてのを使う場合かとも思うが。 ーーー 初心者の(特にVBAの)質問は (1)何がしたいかを、「文章!」で書く(VBAコードで説明しようとしない)。ほかにシートのデータの有様や、達成後のシートの状態を書く。 (2)丸投げで無いということで、参考に自分の作ったコードを最後に載せる(うまく行かないのだろうから、回答者には余り参考にならない野田が) (3)初心者はVBAコードを作る場合の、方針というか方向というかロジックが、訓練されていないので、荒唐無稽や奇想天外や、不適当なことが多々ある。 これが的を射るように勉強を積み重ねる(それには指導者がいるし時間がかかる)べきだが、勉強が十分で無い状態で、質問するようなので、質問文は、ぜひ(1)-(2)を守ってほしい。
お礼
ご指摘頂きまして有難う御座います。 「荒唐無稽」「奇想天外 」「不適当 」たしかにその通りかもしれません。 せっかくお答え頂くつもりでご覧頂いたにも関らず、訳の分からない質問をしてしまい大変申し訳ありません。 また、もし仮にご不快に思われる様でしたら「ど素人が訳の分からない事を言っているなあ」と、スルーしてやって下さい。 このような殆ど無利益なサイトにあって、ご親切でお応えして頂ける方のお気持ちと、貴重なお時間を無駄に消費してしまう事は、私にとっても本望ではありません。 とはいえ、せっかくご指摘を頂戴したのですから、しっかり今後に役立てたいと思います。もっと具体的に内容が把握出来る様、極力気をつけさせて頂きます。 有難う御座いました。
お礼
ご回答頂きまして有難う御座います。 imogasiさんのご指摘にある通り、質問の内容が曖昧であったにも関らず、目的を察していただいた上、的確なご回答を頂きまして有難う御座います。 私が記述した”イベントプロシジャ”のコードは、「A2がアクティブになった」という「イベント」で起動するものであり、マクロとしては登録出来なく(というか意味が無い)、登録するのならば標準モジュールに記述する必要があるという事、理解しました。 有難う御座います。 また今度質問させて頂く事がありましたら、ご助力頂けると嬉しいです。宜しくお願いいたします。