- ベストアンサー
Excel2010のイベントプロシージャが動かない?初心者向けの解決方法をご教示ください
- Excel2010でイベントプロシージャを使いたいが、うまく動作しない場合の初心者向けの解決方法を教えてください。
- VBA初心者がインターネットからイベントプロシージャを探してきて、コピペして使おうとしていますが、うまくいきません。
- 具体的には、セルE2の値が変更されたら、その値をシート名にしたいと考えています。初心者でも理解しやすい解決方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1番さんが回答の中で最高のヒントをくださってますね。 > コード自体はあってます。 > 貼りつける場所が問題なのでは。 要するに、このコードを「そのまま」「該当シートのモジュールに」貼りなさい、という事です。 例えば、現在の名前が「Sheet1」であるワークシートに設定したいのであれば、 正しく貼り付けると添付図のような感じになるはずです。 もう一つの可能性として、 マクロのセキュリティで、マクロを無効にしているケースもありますが、 これだとマクロを動かそうとすると警告が出てきます。 警告が出てこないなら、マクロは有効な状態であると言えます。 どちらにしても「どのように」動かないのか、 状況がわからない状態では的確なアドバイスはほぼ不可能と思ってください。 警告が出るのか、エラーメッセージが出るのか、はたまた無反応なのか、 それによって対処も少しずつ変わります。 > 初心者には難しいでしょうか? 内容は至極簡単で、知らない人でも英語で読めばなんとなくわかるレベルの処理です。 (単語自体は中学校で習う程度の英単語ですよね。) ですが、「どこに書けばどのタイミングで動くか?」を理解しないと、 良いタイミングでは動きません。 他さまのサイトへのリンクで恐縮ですが、 http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_event.html ここを一読頂ければ、なんとなく理解できるのではないかなぁ、と思いますので、 参考になさってくださいませ。
その他の回答 (1)
- kybo
- ベストアンサー率53% (349/647)
コード自体はあってます。 貼りつける場所が問題なのでは。 シートの見出しで右クリック、コード表示を選び、貼りつけします。 貼りつけたシートでしか動作しません
補足
さっそくご回答いただきましてありがとうございます。 教えていただいた方法で試してみましたが、動きませんでした。 何か基本的な設定にミスがあるような気もします・・・ 拡張子はxlsmで保存しているのですが。
お礼
「無反応」だったのですが・・・ ようやく原因がわかりました。 E2にはVLOOKUPの式が入っていて、別のセルE3にコードを入力すると、他のリストから店舗名を引っ張ってくる、というようにしていました。 ですのでE3を変えるとE2も変わるので、その変わったE2をシート名にしたかったのですが、このイベントプロシージャは入力による変更の場合に動作するものと理解することができなかったのです。 (VLOOKで値が変わってもシート名は更新されない。) そこで If Target.Address(False, False) = "E2" Then のE2をコードを入力するE3に変えて If Target.Address(False, False) = "E3" Then にしたところ、期待通りシート名が変更されました。 大変勉強になりました。 ありがとうございました。