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

あるエクセルのシートで 例えばSHEET1で そこでマクロAをした結果を 他のあるマクロシート(例えばSHEET100)のある場所にコピーペーストして、再度前のSHEET1に戻って前とは違うマクロBの結果を再度SHEET100の特定の場所に張り付ける場合は どのようにVBA書くか

この場合SHEETはSHEET1、2、3・・・・ と変わるがSHEET100は変わらないものとする。
要するに最初のマクロAをしてSHEET100に張り付けた時点で帰るとき どこのSHEETに帰ってマクロBを行えばいいかを知っているということです。それを記述するVBAです。

A 回答 (2件)

今、気になって調べてみましたが、Worksheet オブジェクトには、Previous というプロパティはあっても、物理的(Sheet2 -> Sheet1) なもので、記録的なものはありません。

(はずです)

最初のシート名が定まらない時は、移動後のシートをActiveSheet という扱いにしますね。それで、 オブジェクトに Set で変数(仮 AcSh=ActiveSheet) に入れておいて
Set AcSh = ActiveSheeet
として、
Worksheets("Sheet100") ....このときに、Sheet100... というオブジェクト名は使ってはいけません。オブジェクト名は絶対名ですから、不明のエラーで一部で動かなくなります。

Worksheets("Sheet100") で作業して、AcSh (前に登録したシート)に戻るという方法が取られます。

もちろん、No.1 さんが書いた方法は、正解です。
    • good
    • 0

こんにちは



>張り付けた時点で帰るとき どこのSHEETに帰ってマクロBを行えばいいか~~
発想を変えた方が良さそうに思います。
手で操作する場合は、操作の対象とするSgeetをアクティブにしないと操作できませんけれど、VBAからは直接アクセスできますので。

例えば
 Worksheets("SHEET100").Range(AA).value = Worksheets("SHEET1").Range(BB).value
のような記述(=考え方)であれば、「戻る」とか「帰る」という発想とは無縁になるのではないでしょうか。
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A