パソコンの月刊誌には、エクセルのマクロのテクニック集などが掲載される事があります。
また、インターネット上にも同様のサイトがあります。
これらの多くでVBAのコードでは、シート名が省略されています。
例えば以下のコードは
セルA1の値を セルE1の値にします。
Range(“A1”).Value = Range(“E1”).Value
セルE1が 福岡県 となっている場合 セルA1は 福岡県 となります。
ここでは、シート名が省略されています。
初心者の方は、シート名「Sheet1」のセルA1の値を 「Sheet2」セルE1の値にする場合となると突然わからなくなります。
自分の探していたテクニックを雑誌やネットで探しても異なるシート上で操作を行うように修正する時に壁にぶつかってしまいます。
私も覚えたての時にこのような経験があります。
この部分は、初心者には少し敷居が高いと思います。
シート名の記述は難しくありませんのでここで確実に押さえておきましょう。
では シート名「Sheet1」のセルA1の値を 「Sheet2」セルE1の値にする場合
Worksheets(“Sheet1”).Range(“A1”).Value = Worksheets(“Sheet2”).Range(“E1”).Value
となります。
たったのこれだけです。
さらに正式に記述した場合
Workbooks(“book1.xlsx”).Worksheets(“Sheet1”).Range(“A1”).Value = Workbooks(“book1.xlsx”).Worksheets(“Sheet2”).Range(“E1”).Value
となります。
Excelでは、複数のブック(ファイル)を立ち上げる事が出来ますので正式に記述すればbook2のセルの値をbook1へ記述させることもできます。
正式な記述はとても長くなり可読性が低くります。
実際のVBAコードでは必要がなければこのように書くことはありません。
以下のコードで説明を行います。Workbooks(“book1.xlsx”).Worksheets(“Sheet1”).Range(“A1”).Value
赤い部分は省略することができ 省略した場合 アクティブブック を指定したことになります。
緑色の部分を省略した場合 アクティブシート を指定したことになります。
実務的なVBAではシート名に変数を使用したり、withステートメントを使用して可読性を上げます。別のページで解説するようにします。
シート名の記述についてですが、ここでは Worksheets(“Sheet1”) と書きましたが Sheets(“Sheet1”) と記述されているものもあります。
「マクロの記録」でも シートを選択した場合 Sheets(“Sheet1”).Select と記述されます。
Worksheets(“Sheet1”).Range(“A1”).Value = Worksheets(“Sheet2”).Range(“E1”).Value
と
Sheets(“Sheet1”).Range(“A1”).Value = Sheets(“Sheet2”).Range(“E1”).Value
は 異なる内容なのでしょうか?
結論を先に言えば、どちらでも同じです。
シートを追加する時に以下の表示ができます。
普通私たちが使うシートでは「ワークシート」を選択しますが、「グラフ」を選択することもあります。
通常使うシート「ワークシート」が Worksheets になります。
「グラフ」の場合は Charts になります。
Sheets の種類に Worksheets や Charts などがあるのです。
「ワークシート」だけを使う一般的なVBAではどちらを使っても結果は同じになります。
Sheets と Worksheets の記述方法が異なる理由だけを理解して下さい。