※ ChatGPTを利用し、要約された質問です(原文:【ExcelVBA】マクロボタンについて)
ExcelVBAマクロボタンで正しい結果が得られない原因とは?
このQ&Aのポイント
Excel2003で作成したマクロ1をExcel2013のマクロボタン1から実行すると、正しい結果が得られない。しかし、Alt+F8キーで表示されるマクロ一覧から実行すると、正しい結果が得られる。
別のマクロ2をマクロボタン2から実行すると、正しい結果が得られる。
互換モードや保存形式の変更など試しても結果は同じで、ボタンからの実行では正しい結果が得られない。原因は不明。
こんにちは。
Excel2003で作成したマクロ1をマクロボタン1に登録してシート上に配置しています。
これをExcel2013で開いて(互換モード)マクロボタン1をクリックしてマクロ1を実行すると、エラーは出ませんが、正しい結果が得られません。
マクロボタンからではなく、Alt+F8キーで表示されるマクロ一覧からマクロ1を選択して実行すると、正しい結果が得られますので、コードの記述には問題なさそうです。
上記のマクロとは別のマクロ2をマクロボタン2に登録して、マクロボタン1と同じシート上に配置していますが、こちらはボタンからの実行でも正しい結果が得られます。
試しに、フォームコントロールから新たにボタンを挿入し、マクロ1を登録して実行してみましたが、結果は同じでした。
また、互換モードではなくExcel2013で保存し直して(.xlsm)上記と同じことをしてみましたが、これも結果は同じでした。
何が原因として考えられるでしょうか?
マクロをボタンに登録しないと絶対に困るというわけではないのですが、ボタンからの実行では正しい結果が得られないのが不思議です。
よろしくお願いします。
お礼
回答ありがとうございます。 > 「マクロボタン1」という表現は、その原因を判断できるような情報ではありません。 マクロを登録しているボタンが2つあり、便宜的にマクロボタン1、マクロボタン2と表現したのですが、わかりづらかったようで申し訳ありません。 ボタンを使わずにマクロを実行すれば問題ないこと、また、質問文には書きそびれていましたが、Excel2003で使用していたときはボタンのクリックでも問題なく処理できていたことから“不思議”と感じましたので、そのまま質問文に記載してしまいましたが、これもわかりづらかったようで…。 > フォーム・コントロールのマクロ・コードは、標準モジュールですが、通常の書き方だと、アクティブシートに対して行われます。 マクロボタン1での処理は、あるシートのデータの中から条件を満たすものを別のシートに転記するという内容なので、シートをまたぐことが関係しているのかもしれないというヒントを得ることができましたので、もう少し検証してみようと思います。