前回紹介したオブジェクトの一覧を取得する方法の少し新しい版です。
予告通りですね。( 珍しい・・・ (^ ^;) )
以下は、Sheet1***という風に「Sheet1」で始まる名前のシートだけをデバッグウィンドウに表示します。
たとえば、Sheet1, Sheet12 なんてのですね。
Option Explicit Const PRE_SHT = "Sheet1" Function getSheets2() As Collection Dim shts As New Collection Dim sht As Worksheet For Each sht In Worksheets If (Left(sht.Name, Len(PRE_SHT)) = PRE_SHT) Then shts.Add sht End If Next sht Set getSheets2 = shts End Function Sub test2() Dim sht As Worksheet For Each sht In getSheets2() Debug.Print sht.Name Next sht End Sub
前回は動的配列を使用していましたが、今回はコレクションを使っています。
何が違うのでしょうか?
配列は、単に同じ種類の要素(ここではオブジェクト)を単に集めただけですが、コレクションはその要素の集まりをオブジェクトとして扱います。
オブジェクトですから、当然プロパティやメソッドを持っています。
例えば、上記の例ではAddメソッドを使っていますよね。
逆に動的配列の場合は、メソッド等がありませんから、関数などを用いて操作していましたよね。
では、どちらを使う方が良いのか? という事になると、一概にどうとは言えないんですよね・・・
ただ、コレクションの方がオブジェクト指向っぽい分洗練されているとは言えるかもしれませんね。
次回は前回の補足を少し、紹介します。何の事かはお楽しみ。