前回は「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というのは、「.」(ドット)を置いてより小さい単位のものを書くようになっている。
ワークブック→ワークシート→セル……といった具合だ。
今回はアクティブではないシートのセルにも書き込む方法を説明する。
シートの指定の仕方にはいくつか方法がある。
では、まず下準備として、エクセル本体の「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というのは、「.」(ドット)を置いてより小さい単位のものを書くようになっている。
ワークブック→ワークシート→セル……といった具合だ。