「vba 非アクティブシート セル 選択」
といった検索で、時折アクセスがあります。
Excel VBAで、アクティブではないワークシートのセルを選択するには、どうすればいいのか調べていらしたのでしょう。
セル選択が本当に必要かを考えましょう
まず、考えていただきたいのは、作ろうとしているそのExcelマクロは、本当にセルを選択しないとできないのか、です。
セルの選択は、あくまでも人間がExcelを操作する際に必要な操作です。
VBAでセルに対して行う何らかの処理・操作は、多くの場合、選択しなくても可能です。
選択をせずに、セルを表すRangeオブジェクトを取得できれば、VBAからセルを操作することは、多くの場合、可能です。
非アクティブシートのセルを選択するサンプルマクロ
どうしても、アクティブでないワークシートのセルを選択する必要があるのであれば、以下のようなマクロでしょうか。
Application.ScreenUpdating = False
Worksheets(2).Select
Worksheets(2).Range("A1:G7").Select
Worksheets(1).Select
Application.ScreenUpdating = True
End Sub
新規にブックを作成しワークシートが2枚以上存在する状態にし、1枚目のワークシートがアクティブにしておいてから、上記のマクロを実行してください。
アクティブではない2枚目のワークシートのA1:G7セルが選択されます。
非アクティブシートのセルを選択するマクロで行っている処理
Excel VBAの仕様上、アクティブでないワークシートのセルを選択することは不可能です。
そのため、一旦ワークシートを選択しておいてから、セルを選択するしかありません。
以下の2行が、2枚目のワークシートを選択して、2枚目のワークシートのA1:G7セルを選択しているコードです。
Worksheets(2).Select
Worksheets(2).Range("A1:G7").Select
上記コードの前の行
Application.ScreenUpdating = False
と、2枚目のワークシートのA1:G7セルを選択後の、
Worksheets(1).Select
Application.ScreenUpdating = True
は、非アクティブシートのセルを選択しているかのように見せかけるためのコードです。
2枚目のワークシートを選択する前の、
Application.ScreenUpdating = False
は、Excelの画面が更新されないようにする定番の処理です。
このコードを入れておくことによって、実際には2枚目のワークシートが選択されているにも関わらず、画面上のExcelでは何も変化がおきていないかのように見せかけられます。
2枚目のワークシートのA1:G7セルを選択後の、
Worksheets(1).Select
は、実際には2枚目のワークシートが選択されてしまっているので、1枚目のワークシートを選択し直しているコードで、
Application.ScreenUpdating = True
Excelの画面更新が、行われるように戻している処理です。
Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » VBAで非アクティブシートのセルを選択するには