Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » VBAで非アクティブシートのセルを選択するには

VBAで非アクティブシートのセルを選択するには

動作検証バージョン:Windows 11 Home + 64bit Excel(バージョン2307 ビルド16626.20000 クイック実行)

「vba 非アクティブシート セル 選択」
といった検索で、時折アクセスがあります。

Excel VBAで、アクティブではないワークシートのセルを選択するには、どうすればいいのか調べていらしたのでしょう。

[スポンサードリンク]

セル選択が本当に必要かを考えましょう

まず、考えていただきたいのは、作ろうとしているそのExcelマクロは、本当にセルを選択しないとできないのか、です。

セルの選択は、あくまでも人間がExcelを操作する際に必要な操作です。
VBAでセルに対して行う何らかの処理・操作は、多くの場合、選択しなくても可能です。

選択をせずに、セルを表すRangeオブジェクトを取得できれば、VBAからセルを操作することは、多くの場合、可能です。

非アクティブシートのセルを選択するサンプルマクロ

どうしても、アクティブでないワークシートのセルを選択する必要があるのであれば、以下のようなマクロでしょうか。

Sub 非アクティブシートのセルを選択する()
 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で非アクティブシートのセルを選択するには

「Applicationオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.