オブジェクトを変数にセット
ではオブジェクトの一種「WorkSheet」を変数にセットしてみましょう!
今までは変数に値をセットする場合は=で繋いでそのままセット出来ましたね。
例えば変数aに整数の1をセットするとすると…
a = 1
この様な感じでしたね。
しかし、オブジェクトをセットする場合は正にセットしなければいけないわけです。
例えば変数aにセットするとすると…
Set a = ActiveSheet
この様にSetが付きます。
Activeとは今、正に操作しているものの事ですね。
例えばセルであればActiveCell、ブックであればActiveWorkBookとなります。
では実際にVBEで操作してみましょう。
ここまで変数の型でやったことはありませんが、この様にWorkSheetも変数の型として認められます。
同じようにWorkBookやRangeも変数の型として使用できますので覚えておきましょう。
変数にオブジェクトをセットするメリット
これは他の変数をセットする時と概ね一緒ですね。
本来ならばActiveSheetを操作したい時には
ActiveSheet.Cells(1, 1).Value = 1
この様に記述しなければいけない所を
a.Cells(1, 1).Value = 1
この様に省略できます。
他のシートと一緒に操作してみましょう
ActiveSheet以外のシートを操作する場合はWorkSheets(“Sheet2”)の様にWorkSheetに続いてカッコを書き、ダブルクォーテーションで括ってシート名を指定する必要があります。
ではActiveSheetとWorkSheets(“Sheet2”)を変数にセットしてActiveSheetの内容をWorkSheets(“Sheet2”)に転記してみましょう。
Dim a As Worksheet Dim b As Worksheet Dim c As Integer Dim r As Integer Set a = ActiveSheet Set b = Worksheets("Sheet2") For c = 1 To 4 For r = 1 To 5 b.Cells(r, c).Value = a.Cells(r, c).Value Next Next
この様にForをネストしながらColumnとRowを操作しつつ他のシートに転記する事が可能です。
これを変数無しで操作しようとすると
Dim c As Integer Dim r As Integer For c = 1 To 4 For r = 1 To 5 Worksheets("Sheet2").Cells(r, c).Value = ActiveSheet.Cells(r, c).Value Next Next
ちょっと面倒くさいですね。
シート間の操作をするためにはWorkSheetを変数にセットする事がいかに手順を省けるのかがわかるかと思います。
複数回に渡ってシートやRangeなどのオブジェクトを操作する場合は変数にセットするようにしていきましょう。
では次回はWithについてお勉強していきたいと思います。