• 検索結果がありません。

Next i

ドキュメント内 PowerPoint プレゼンテーション (ページ 55-87)

Variant

型の変数に配列を代入すると、

配列として普通に使えるようになり ます

配列の使い方

固定配列

動的配列

コレクションの使い方

今日の目的

異なる型やオブジェクトを格納できる

各要素の追加、削除が容易

連想配列としても使用できる

コレクション

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim vData As Variant For Each vData In cll

Debug.Print TypeName(vData) & ":" & vData Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

バリアント型に一端格納しない パターンの例

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Call cll.add(“ゆっくりしていってね”, Before:=1 ) Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

Before:=x

とすることで要素xの前に新しい要 素を追加する

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Call cll.add(“ゆっくりしていってね”, Before:=1 ) Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Call cll.add(“ゆっくりしていってね”, After:=1 ) Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

After:=x

とすることで要素xの後に新しい要 素を追加する

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1))

Call cll.add(“ゆっくりしていってね”, After:=1 ) Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1)) Call cll.Remove( 1 )

Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

Remove

メソッドを使用することで

指定の要素を削除できる

Dim cll As New Collection

Call cll.add("オプーナ")

Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&)

Call cll.add(Sheet1.Cells(1, 1)) Call cll.Remove( 1 )

Dim i As Long

For i = 1 To cll.Count

Debug.Print TypeName(cll.Item(i)) & ":" & cll.Item(i) Next

Set cll = Nothing

 String

型の一意のキーを指定して効果発動

プログラマはキーを元にデータの取得、削除ができ る

連想配列

Dim cll As New Collection Call cll.add("カイジ", "") Debug.Print cll.Item("") Set cll = Nothing

Dim cll As New Collection Call cll.add("カイジ", "")

Call cll.add(“アカギ”, “倍プッシュ", before:="") Set cll = Nothing

Dim cll As New Collection Call cll.add("カイジ", "")

Call cll.add(“アカギ”, “倍プッシュ", before:="") Call cll.add(“黒沢”, “最強”, after:=“倍プッシュ") Set cll = Nothing

Dim cll As New Collection Call cll.add("カイジ", "")

Call cll.add(“アカギ”, “倍プッシュ", before:="") Call cll.add(“黒沢”, “最強”, after:=“倍プッシュ")

Call cll.Remove("最強") Set cll = Nothing

 String

型の一意のキーを指定して効果発動

プログラマはキーを元にデータの取得、削除ができ る

連想配列

Private Function HasCollectionKey(ByRef cll As Collection, _ ByVal keyName As String) As Boolean

On Error GoTo ErrCatch Dim lRet As Long

lRet = VarType(cll.Item(keyName)) HasCollectionKey = True

Exit Function

ErrCatch:

If err.Number <> 5 Then

err.Raise err.Number, err.Source, err.Description, _ err.HelpFile,err.HelpContext

Exit Function End If

HasCollectionKey = False End Function

キーの存在チェック

Private Function HasCollectionKey(ByRef cll As Collection, _ ByVal keyName As String) As Boolean

On Error GoTo ErrCatch Dim lRet As Long

lRet = VarType(cll.Item(keyName)) HasCollectionKey = True

Exit Function

ErrCatch:

If err.Number <> 5 Then

err.Raise err.Number, err.Source, err.Description, _ err.HelpFile,err.HelpContext

Exit Function End If

HasCollectionKey = False End Function

キーの存在チェック

Public Sub TestHasCollectionKey() Dim cll As New Collection

' キーのチェック

Call cll.add("アカギ", "倍プッシュ")

Debug.Print "Trueのはず;" & HasCollectionKey(cll, "倍プッ シュ")

Debug.Print "Falseのはず;" & HasCollectionKey(cll, "最強")

' オブジェクトも検索可能

Call cll.add(Sheet1, "シート1")

Debug.Print "Trueのはず;" & HasCollectionKey(cll, "シート1

")

Debug.Print "Falseのはず;" & HasCollectionKey(cll, "シート2

")

Set cll = Nothing End Sub

 ExcelVBA006.xlsm

の標準モジュール

 mdlArraySample

配列のサンプルプログラム

 mdlCollectionSample

コレクションのサンプルプログラム

サンプル

ドキュメント内 PowerPoint プレゼンテーション (ページ 55-87)

関連したドキュメント