- ベストアンサー
Excelマクロのマクロ名の違いとは?
- Excel2003を使用している場合、Sheet5とSheet6に作成したマクロの処理に違いが出ることがあります。Sheet5ではマクロが正常に処理されますが、Sheet6ではマクロが見つからないというエラーメッセージが表示されます。この原因は、マクロ名の表記にあります。Sheet5のマクロは「Sheet5.マクロ名」と表記されていますが、Sheet6のマクロは「'A'!マクロ名」と表記されています。Sheet6のマクロが正しく処理されるためには、マクロ名の表記を修正する必要があります。
- Excel2003のSheet5とSheet6に作成したマクロには、マクロ名の違いがあります。Sheet5のマクロは「Sheet5.マクロ名」と表記されており、正常に処理されます。一方、Sheet6のマクロは「'A'!マクロ名」と表記されており、マクロが見つからないエラーが発生します。Sheet6のマクロを正しく処理するためには、マクロ名の表記を修正する必要があります。
- Excel2003を使用している場合、Sheet5とSheet6に作成したマクロには違いがあります。Sheet5のマクロは正常に処理されますが、Sheet6のマクロは見つからないエラーが発生します。この違いの原因は、マクロ名の表記にあります。Sheet5のマクロは「Sheet5.マクロ名」と表記されており、Sheet6のマクロは「'A'!マクロ名」と表記されています。Sheet6のマクロを正しく処理するためには、マクロ名の表記を修正する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。Wendy02です。 私の使っているExcelでは、その現象自体は確認できませんが、確かに、それ「らしき」現象は見られますね。おそらく、何度やっても、Sheet6 の直下のモジュールのコードでは、ボタンのマクロの登録が飛んでしまう現象は続くと思います。 本来、このフォームのコントロールのコードは、「標準モジュール」に書くようにはなっています。「標準モジュール」にコードを以下のように書いていただくしかありませんね。(別々でも構いませんが) ちなみに、コントロールツール側が、直下のシートのモジュールに書くようにはなっています。できるだけ、コントロールツール側をお使いになったほうが良いと思います。 Sub TestButton_Click() Dim ShName As String ShName = ActiveSheet.Name If ShName = "Sheet5" Then 'Sheet5 に対する実行 ElseIf ShName = "Sheet6" Then 'Sheet6 に対する実行 End If End Sub 'なお、フォームのツールは、_Clickとしても、登録しないで、イベントが働くわけではありません。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02です。 >Sheet5とSheet6のマクロ名が似ていたりすると質問文のような現象が起こりやすくなるということは考えられますか? 似た名前の問題ではなく、同じ名前なら、問題があるのではないか、と思いますが、私が、#2で書いた話が、本日、同じことを確認しようとしてみて、できなくなりました。問題もありません。 ただ、二つの[同じ名前(フォームのプロパティがほとんど同じ)]のものは、シートモジュールや標準モジュールで別々に存在することが出来ても、フォームのコントロールの配下では、親オブジェクトが、Applicationなので、片方は、追いやられることになるのではないか、と考えました。 ただ、推測の域が出ません。今の時代のExcel(XL2003)には、別の古い仕様のツールでも、問題が出ているという話は聞くので、この昔のコントロールにも、何かはあるのだと思っているのですが、なんだか、分からなくなってしまいました。もっとはっきりすると思っていたのですが、確証とれなくてすみません。
お礼
Wendy02 さん、こんにちは。 再度の回答ありがとうございます。 >今の時代のExcel(XL2003)には、別の古い仕様のツールでも、問題が出ているという話は聞くので、この昔のコントロールにも、何かはあるのだと思っているのですが、なんだか、分からなくなってしまいました。もっとはっきりすると思っていたのですが、確証とれなくてすみません。 変な質問をしてしまい、お手間を取らせたようで申し訳ありません。マクロの名前も内容も似ていたので、そのせいもあるのかと思ってしまいました。 とりあえず、マクロ名を変更後は問題ないようです。ありがとうございました<(_ _)>
- FEX2053
- ベストアンサー率37% (7991/21371)
はい、その通りです。 VBE(マクロのエディタ)のプロジェクトエキスプローラで、 Sheet6以下に記述されているか、標準モジュールに記述されていないと そのシートのマクロは動作しません。 VBEを開いて確認して下さい。
補足
>Sheet6以下に記述されているか、標準モジュールに記述されていないと そのシートのマクロは動作しません。 質問を投稿する前に確認して投稿しましたが、再度確認しました。 Sheet6以下に記述しています。 昨日、質問文と同じことが起きたので、一旦、Sheet6のコードを消去して解放して、再度コードを記述してみました。そしたら、マクロ名欄に『Sheet6.マクロ名』で表示されていたので、それをボタンに登録して、マクロも正常に処理されました。 ところが、今日またマクロ名が見つからないとダイアログが出たので、マクロ名を確認したら、『'A'!マクロ名』に戻っていました。Sheet5とSheet6とは別で、違う内容のコードを記述しているシートがあるのですが、そのマクロ名はSheet5と同じようになっています。このSheet6だけマクロ名にブック名が入ってしまっているのですが。。。
お礼
Wendy02 さん、おはようございます。 お礼が遅くなり申し訳ありません。この質問に目を留めてくれないかなと思って投稿しましたので、回答いただけて嬉しいです。 今回は、特定のシートにしか使わないマクロだったので、初めてそのシート直下にコードを書いて、セル上にボタンを作ってみたのですが、ひとつ気になることが。。。 Sheet5とSheet6のマクロ名が似ていたりすると質問文のような現象が起こりやすくなるということは考えられますか? 今回の場合は同じ言葉が含まれていました。試しにマクロ名を変更してみたところ、今のところ質問文のような現象は起きていません。