[[20190218225636]] 『別シートでマクロ実行するには』(メロ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『別シートでマクロ実行するには』(メロ)

はじめまして。

早速ですが、
シート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.