[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別シートでマクロ実行するには』(メロ)
はじめまして。
早速ですが、
シート2にマクロボタンを作成しシート1にマクロを実行させたいです。
マクロを作成したのはシート1ですが、実際にシート2でマクロボタンを作って
実行するとシート2で実行されてしまいます。
シート1で実行するにはどうしたらいいでしょうか。ご教授願います。
< 使用 Excel:Excel2003、使用 OS:Windows7 >
コード見てないからあてずっぽうですけど Rangeとかの前に、シート名指定してないだけではないですか?
シート2を開いたままシート1を操作する場合、 Sheets("Sheet1").Range("A1") のように、シート名を指定してあげてください 一ヶ所だけではなく、すべてのRangeが対象です (稲葉) 2019/02/19(火) 00:56
コードの提示が無ければどこが悪いかの指摘が出来ません。 先ずはコードの全文を提示して下さい。
それと本当にコードはシート1のシートモジュールに記述されてるんですか? 実はシート2や標準モジュールに記述してたって事は無いですか?
>Rangeとかの前に、シート名指定してないだけではないですか? コードがシート1のモジュールに記述されてれば、 シート名を指定しなければシート1に対して実行されるので、 仮に記述場所が間違ってたなど、理由は別にあると思います。
(sy) 2019/02/19(火) 20:24
たしかに「マクロを作成したのはシート1」と仰ってるので、あたかもシート1のモジュールに記述しているようにおもえますけど、「シート2でマクロボタンを作って」と仰ってるあたり、ボタンを【フォームコントロール】か【図形】で作っていて、標準モジュールに記述したマクロを”登録”したんじゃないでしょうか?
既に指摘されていますが、標準モジュールに対象のシートを省略したコードを記述するとActiveSheetが指定されたと解釈されますので注意が必要です。
標準モジュールだと
Range("A1").Value="あいう" ↓ ActiveSheet.Range("A1").Value="あいう"
と解釈されます。
したがって、Sheet1を対象としたいのであれば、
Worksheets("Sheet1").Range("A1").Value="あいう"
のように対象シートを明示したほうが、少なくとも思わぬシートを処理対象にしてしまったというミスは減らせると思います。
(もこな2) 2019/02/20(水) 00:35
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.