[オブジェクト] Worksheet

「Sheet1」、「Sheet2」、「Sheet3」...などのシートを指し、Excelのブックに属します。Workbook オブジェクトと同様に省略することが可能で、その場合は選択されているアクティブなシートが対象となります。また、Worksheet オブジェクトにも様々な指定、表現方法があります。ワークシート Sheet1 のセル A1 に「テスト」と入力する場合を例に示してみましょう。

(1) シート名を使う場合

Worksheets("Sheet1").Range("A1").Value = "テスト"


(2) Worksheets コレクションを使う場合

Worksheets(1).Range("A1").Value = "テスト"


(3) CodeName プロパティを使う場合

Menu.Range("A1").Value = "テスト"

標準では ' Sheet1.Range("A1").Value = "テスト" ' でOKですが、ここでは理解しやすいように CodeName を Menu に変えています。


(4) Sheet1 が選択されている場合(その1)

ActiveSheet.Range("A1").Value = "テスト"


(5) Sheet1 が選択されている場合(その2)

Range("A1").Value = "テスト"


(1)は最も標準的な方法です。しかし、ワークシートの名前を変えた場合には書き換えなければならなくなります。(3)のように CodeName を使メリットは、これが無くなることです。慣れない間は(4)や(5)のような記述はおすすめしません。どのシートがアクティブかはっきりしていれば良いのですが、後から何十行もあるプロシージャを見直す時などに分かりやすくするため、(1)か(3)の方法が適当でしょう。特別な場合として、ワークシートのイベントプロシージャの中では(4)や(5)のようにした方が逆にすっきりして良いかもしれません。

(1)や(2)の中で、Worksheet の後の ' s ' ですが、これはワークシート全体、つまりワークシートコレクションという意味です。この中の一部を指定しますということです。

(2)を使う場合は、主に複数のシートを処理します。例えば以下のようになります。
Sub Sample1()
' 各ワークシートの A1 にそのワークシート名を入力します
  Dim i As Byte
  For i = 1 To Worksheets.Count
    Worksheets(i).Range("A1").Value = Worksheets(i).Name
  Next i
End Sub