別シートの参照と選択の違い
別シートを参照するには、2つの方法があります。
1つは別シートを選択した上で、その別シートを参照する方法です。
もう1つは別シートを選択せずに、その別シートを参照する方法です。
別シートを事前に選択するかしないかの違いです。
多くの場合は、選択しない方が処理速度は速いですし、また、余計な処理をしなくて済むという利点もあります。
「参照」という言葉と「選択」という言葉はVBAでは異なっています。たまに「参照」という言葉に「選択」も含んでいると考えてしまう方がたまにおられるのですが、選択してもしなくても、別シートのデータを参照することは可能です。
別シートの参照方法
別シートを選択して参照する方法
別シートを選択して、選択後のシートのA1セルに”100″を入力するサンプルです。
この関数が終わった直後は一番左のシートがアクティブになっている状態になります。
1 2 3 4 5 |
Sub SheetSelectReferTest() Sheets(1).Select Range("A1").Value = "100" End Sub |
別シートを選択せずに参照する方法
別シートを選択せずに、別シートのA1セルに”100″を入力するサンプルです。
2行目でWorksheetオブジェクト用の変数を用意し、4行目で別シートのオブジェクトを格納しています。
あとは、その別シートを格納したWorksheetオブジェクトを参照すれば別シートを選択せずに参照することが可能になります。
この関数が終わった直後もシートは元のシートを選択したままの状態です。別シートを選択してA1セルを見ると”100″が入力されていることが確認できます。
1 2 3 4 5 6 7 |
Sub SheetReferTest() Dim sht As Worksheet Set sht = Sheets(1) sht.Range("A1").Value = "100" End Sub |
別シートを選択した方がいいかどうか
別シートのデータを参照する際に、その別シートを選択すべきかどうかですが、プログラミングと処理速度の観点から言えば多くの場合は選択しない方が良いです。
しかし、VBAの処理開始以降でシートの遷移などが目視できることを重要視するなどの場合であれば別シートを選択することもあります。
絶対に別シートを選択しなければならない場合
絶対に別シートを選択しなければならない場合があります。それはセルを選択する場合です。
セルを選択する場合は以下の手順を必ず踏む必要があります。
- シートを選択する。
- セルを選択する。
この順番は必須です。シートを選択せずにセルを選択することは出来ません。
もし別シートを選択せずにセルを選択するとエラーになります。