別シートのセルを選択する
アクティブシートではないワークシートのセルを、セルを表す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【アクティベイト】メソッドを使用しないで直接操作すれば良いことがわかりました。
以上で、別シートのセルを選択する方法についての解説を終了します。
ありがとうございました。