プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

Excel2003で作成したマクロ1をマクロボタン1に登録してシート上に配置しています。
これをExcel2013で開いて(互換モード)マクロボタン1をクリックしてマクロ1を実行すると、エラーは出ませんが、正しい結果が得られません。

マクロボタンからではなく、Alt+F8キーで表示されるマクロ一覧からマクロ1を選択して実行すると、正しい結果が得られますので、コードの記述には問題なさそうです。
上記のマクロとは別のマクロ2をマクロボタン2に登録して、マクロボタン1と同じシート上に配置していますが、こちらはボタンからの実行でも正しい結果が得られます。

試しに、フォームコントロールから新たにボタンを挿入し、マクロ1を登録して実行してみましたが、結果は同じでした。
また、互換モードではなくExcel2013で保存し直して(.xlsm)上記と同じことをしてみましたが、これも結果は同じでした。

何が原因として考えられるでしょうか?
マクロをボタンに登録しないと絶対に困るというわけではないのですが、ボタンからの実行では正しい結果が得られないのが不思議です。
よろしくお願いします。

A 回答 (1件)

>何が原因として考えられるでしょうか?


「マクロボタン1」という表現は、その原因を判断できるような情報ではありません。
もう少し、詳しく書いてもらわないと、何が正しくて、何が正しくないのか、分かりません。「不思議」という表現をされても、さっぱり伝わらないのです。

エラーが出ず、正しくない結果になるとしたら、コードが原因だとしか言いようがありません。基本的には、バージョンが違うから、VBAの数値や文字列の返り値の結果に違いが出るということはありません。

VBAのコードは、どうなっているのでしょうか?
フォーム・コントロールのマクロ・コードは、標準モジュールですが、通常の書き方だと、アクティブシートに対して行われます。一度、ActiveX コントロールで作ってみたらいかがですか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> 「マクロボタン1」という表現は、その原因を判断できるような情報ではありません。

マクロを登録しているボタンが2つあり、便宜的にマクロボタン1、マクロボタン2と表現したのですが、わかりづらかったようで申し訳ありません。

ボタンを使わずにマクロを実行すれば問題ないこと、また、質問文には書きそびれていましたが、Excel2003で使用していたときはボタンのクリックでも問題なく処理できていたことから“不思議”と感じましたので、そのまま質問文に記載してしまいましたが、これもわかりづらかったようで…。

> フォーム・コントロールのマクロ・コードは、標準モジュールですが、通常の書き方だと、アクティブシートに対して行われます。

マクロボタン1での処理は、あるシートのデータの中から条件を満たすものを別のシートに転記するという内容なので、シートをまたぐことが関係しているのかもしれないというヒントを得ることができましたので、もう少し検証してみようと思います。

お礼日時:2014/02/26 10:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!