前回は「Cells(縦,横)」を使ってエクセルシートへの書き込む方法を説明した。
今回はアクティブではないシートのセルにも書き込む方法を説明する。

シートの指定の仕方にはいくつか方法がある。

では、まず下準備として、エクセル本体の「Sheet1」のシート名を変える。
とりあえず「1番」とでもしておこう。
$国民総プログラマー化計画

シート名を変えたら、Visual Basic Editorを開いて次の3つのマクロを書いてみよう。
書く場所はModule1の前回の続きでよい。

====================================================

Sub Test003()
Sheet1.Cells(2, 2) = "A"
End Sub

====================================================

Sub Test004()
Worksheets("1番").Cells(3, 3) = "B"
End Sub

====================================================

Sub Test005()
Worksheets(1).Cells(4, 4) = "C"
End Sub

====================================================

前回はセルに数字を入れたが、今回は文字列を入れる。
文字列の場合は "" ダブルコーテーションで囲ってやる。
書き終わったらエクセル本体へと戻って、メニューバーの「ツール」→「マクロ」→「マクロ」と進み、Test003、Test004、Testを005をそれぞれ実行してほしい。
いずれも「1番」のシートに書き込まれたはずだ。


まず、Test003の「Sheet1」と記述する方法。
この「Sheet1」とはVisual Basic Editorのプロジェクトエクスプローラに記載されているシート名である。
括弧の中の表記ではない。
ちなみに括弧の中はエクセル本体のシート名が表示されている。
$国民総プログラマー化計画


続いてTest004の「Worksheets("1番")」と記述する方法。
これは単純にシート名をそのままダブルコーテーションで囲って括弧の中に入れてやれば良い。

最後にTest005の「Worksheets(1)」と記述する方法。
これは左から1番目のシートという意味である。
左から2番目のシートを指定したければ「Worksheets(2)」にすれば良い。

ワークシートを指定できれば、ワークブックの指定もしたくなる。
まず、新規でエクセルを立ち上げて「TEST」という名前でいったん保存して閉じて、立ち上げ直す。

Visual Basic EditorのプロジェクトエクスプローラにTest.xlsが出ていればOK。
Module1の先ほどの続きに次の2つのマクロを書こう。

$国民総プログラマー化計画


====================================================

Sub Test006()
Workbooks("TEST.xls").Worksheets(1).Cells(5, 5) = "D"
End Sub

====================================================

Sub Test007()
Workbooks("TEST.xls").Worksheets("Sheet1").Cells(6, 6) = "E"
End Sub

====================================================

ワークブックの指定の仕方はワークブック名をそのままダブルコーテーションで囲って括弧の中に入れてやれば良い。
ただし、拡張子の.xlsを忘れずに!
そしてそのあとに続くシートの指定の仕方に制限があり、Test003のようなシートの指定の仕方はできないので注意が必要だ。

ちなみに、マクロが動いているワークブックそのものを指定する場合は、
ThisWorkbook.Worksheets~
と書く方法もある。
覚えておくと便利だ。

VBやVBAというのは、「.」(ドット)を置いてより小さい単位のものを書くようになっている。
ワークブック→ワークシート→セル……といった具合だ。