Excel VBA 別シートのセルを選択する

スポンサーリンク

別シートのセルを選択する

アクティブシートではないワークシートのセルを、セルを表すRange【レンジ】オブジェクトの
Select【セレクト】メソッドで選択するとエラーが発生します。

sheet1がアクティブでsheet2のA1セルを選択したコード

Sub セル選択1()
 Worksheets("sheet2").Range("A1").Select
End Sub

実行結果


エラーの原因は、セルをSelect【セレクト】メソッドで選択する場合やセルをActivate【アクティベイト】メソットでアクティブにする場合は、「アクティブシートのセル」しか操作できないからです。したがって、このケースの場合はsheet2をアクティブにしてからA1セルを選択する必要があります。

選択できる場合

Sub セル選択2()
    Worksheets("sheet2").Activate
    Range("A1").Select
End Sub

また、指定したセルやセル範囲に移動するApplication【アプリケーション】オブジェクトの
GoTo【ゴートゥ】メソッドを使用して引数の、参照を表すReference【リファレンス】にセル以外にシートも設定すると結果的に設定したシートがアクティブになり
そのセルを選択することができます。

GoToメソッドを使用して選択する場合

Sub gotoメソッド()
    Application.Goto Worksheets("sheet2").Range("A1")
End Sub

結果は、何れにしてもアクティブシート以外のセルをSelect【セレクト】メソッド選択したりActivate【アクティベイト】メソッドでアクティブにすることはできないことがわかりました。

しかし、アクティブシート以外のシートのセルの選択やアクティブの操作以外の
値の代入や参照やコピーなどの操作はできます。例えば

sheet1がアクティブでsheet2のA1セルに値を代入するコード

Sub 値代入()
    Worksheets("sheet2").Range("A1") = 123
End Sub

実行結果

sheet2のA1セルの値をアクティブシートsheet1のA1セルにコピーするコード

Sub コピー()
    Worksheets("sheet2").Range("A1").Copy Worksheets("sheet1").Range("A1")
End Sub

実行結果

sheet2のA1セルには「123」の値が代入されています。


これらの結果からわかったことは、アクティブシート以外のシートのセルを操作する場合は、Select【セレクト】メソッドやActivate【アクティベイト】メソッドを使用しないで直接操作すれば良いことがわかりました。

以上で、別シートのセルを選択する方法についての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告