これ何て呼びますか Part2

ExcelのVBマクロを、バックグラウンドで動かしたいのです。


sheet1のセルに対して操作を行うマクロをMaacroAとします。このマクロをsheet2やsheet3など複数のsheetから呼び出してsheet1を操作したいのですが、どうしても画面がsheet1に移ってしまいます。

Application.ScreenUpdating を使ってもマクロ終了時にsheet1の画面になってしまいます。

どのようにしたらいいのでしょうか?

A 回答 (2件)

>Worksheets("sheet1").Range("A4:W144").Select



上記、補足で提示したコードの直前には、
Worksheets("Sheett1").Select(Activate)がありますよね。
そうでないと
Worksheets("sheet1").Range("A4:W144").Select
こんなことはできませんから。

で、回答。

Worksheets("Sheet1").Select 
Worksheets("sheet1").Range("A4:W144").Select
の2行を削除して以下のようにSortだけにする

'----------------------------------------------------
Worksheets("sheet1").Range("A4:W144").Sort _
  Key1:=Worksheets("sheet1").Range("a4"), _
  Order1:=xlAscending, Header:=xlGuess, _
  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
  SortMethod:=xlPinYin, DataOption1:=xlSortNormal
'-----------------------------------------------------

●点要点●
1.Sortの範囲をシートを明示して直接指定
2.Keyもどのシートのセルなのか分かるようにシート名を付加する

ソートに限らず他のシートから、Sheet1を扱う場合は、
Selectはしないで、シート名を付加すればいいということです。

以上です。
    • good
    • 0
この回答へのお礼

動きました。ありがとうございます。

お礼日時:2010/05/01 02:32

>どうしても画面がsheet1に移ってしまいます



sheets("sheet1").select
sheets("sheet1").activae
というようなコードがあれば確実にアクティブになります。

どのようなコードで何をあいているのかわかりませんが、
Sheets("sheet2").Range("A1").Copy Sheets("sheet1").Range("A1")

activesheet.Range("A1").Copy Sheets("sheet1").Range("A1")

With Sheets("sheet1")
Sheets("sheet2").Range("A1").Copy
.Range("A1").Paste

activesheet.Range("A1").Copy
.Range("A1").Paste

End With

など、構文で実行シートを指定して、active / select などのコードを含まないコードを書くことでです。

>Application.ScreenUpdating を使ってもマクロ終了時にsheet1の画面になってしまいます。

これは、実行中のシート更新をしないためのオプションですから、構文中でどこかのシートをアクティブにしていれば、処理終了後に最後にアクティブにしたシートが表示されるのは当然の処理です。

この回答への補足

>Sheets("sheet2").Range("A1").Copy

>など、構文で実行シートを指定して


実はソートのマクロなんですが…

Worksheets("sheet1").Range("A4:W144").Select
Selection.Sort Key1:=Range("a4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal

では、だめでした。

補足日時:2010/04/29 23:44
    • good
    • 0

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

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


おすすめ情報

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