(Excel No21)「オブジェクトの繰り返しは簡単(3)」

前回紹介したオブジェクトの一覧を取得する方法の少し新しい版です。
予告通りですね。( 珍しい・・・ (^ ^;) )
以下は、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メソッドを使っていますよね。

逆に動的配列の場合は、メソッド等がありませんから、関数などを用いて操作していましたよね。

では、どちらを使う方が良いのか? という事になると、一概にどうとは言えないんですよね・・・

ただ、コレクションの方がオブジェクト指向っぽい分洗練されているとは言えるかもしれませんね。

次回は前回の補足を少し、紹介します。何の事かはお楽しみ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください