Set ステートメントを使う
【構文 1】
Dim objectvar [ As objectvar_type ]
Set objectvar = [ New ] expression
【構文 2】
Set objectvar = Nothing
【項目の説明】
- objectvar ・・・ オブジェクトへの参照を代入する変数またはプロパティの名前を指定します。
- objectvar_type ・・・ 変数(プロパティ) objectvar の型(オブジェクト型・オブジェクトのクラス名・バリアント型など)を指定します。省略するとバリアント型になります。
※オブジェクト型は、オブジェクトの総称「Object」⇒ Object
※オブジェクトのクラス名は、セル(Range オブジェクト)、ワークシート(WorkSheet オブジェクト)などのこと ⇒ Range, WorkSheet - expression ・・・ オブジェクト名を指定します。
【構文 1】について
New キーワードは、クラスのインスタンスを作成するときに使用します。
【構文 2】について
Nothing キーワードを使用して、objectvar の参照を解消します。
Set ステートメント使用例
コレクション(Collection)オブジェクト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
'-------------------------------------------------------------------- ' 以下、Sample1,Sample2,Sample3 は、全て同じ実行結果となります '-------------------------------------------------------------------- '-------------------------------------------------------------------- ' Set ステートメントを使用してオブジェクトの参照を代入 '-------------------------------------------------------------------- Sub Sample1() Dim myItem As Collection Set myItem = New Collection myItem.Add "山田", "Name" MsgBox myItem.Item("name") Set myItem = Nothing End Sub '-------------------------------------------------------------------- ' 宣言時に、New キーワードを使用 '-------------------------------------------------------------------- Sub Sample2() Dim myItem As New Collection myItem.Add "山田", "Name" MsgBox myItem.Item("Name") Set myItem = Nothing End Sub '-------------------------------------------------------------------- ' Set ステートメントを使用してオブジェクトの参照を代入 ' (Collection 型ではなくObject 型 で宣言) '-------------------------------------------------------------------- Sub Sample3() Dim myItem As Object Set myItem = New Collection myItem.Add "山田", "Name" MsgBox myItem.Item("name") Set myItem = Nothing End Sub |
実行結果
クラスを使用する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
'-------------------------------------------------------------------- ' 【Class1 モジュール に記述】 '-------------------------------------------------------------------- Private number As Integer Sub myClass(num As Integer) number = num * 2 End Sub Function Get_number() As Integer Get_number = number End Function '-------------------------------------------------------------------- ' 【標準 モジュール に記述】 ' ' 以下、Sample4,Sample5,Sample6 は、全て同じ実行結果となります '-------------------------------------------------------------------- ' Set ステートメントを使用してクラスのインスタンスの参照を代入 '-------------------------------------------------------------------- Sub Sample4() Dim cc As Class1 Set cc = New Class1 cc.myClass (55) MsgBox cc.Get_number Set cc = Nothing End Sub '-------------------------------------------------------------------- ' 宣言時に、New キーワードを使用 '-------------------------------------------------------------------- Sub Sample5() Dim cc As New Class1 cc.myClass (55) MsgBox cc.Get_number Set cc = Nothing End Sub '-------------------------------------------------------------------- ' バリアント型変数に代入 '-------------------------------------------------------------------- Sub Sample6() Dim cc Set cc = New Class1 cc.myClass (55) MsgBox cc.Get_number Set cc = Nothing End Sub |
実行結果
プロパティ プロシージャの使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Dim m_Image As StdPicture '-------------------------------------------------------------------- ' Get ステートメント '-------------------------------------------------------------------- Property Get Image() As StdPicture Set Image = m_Image End Property '-------------------------------------------------------------------- ' Set ステートメント '-------------------------------------------------------------------- Property Set Image(ByVal newObj As StdPicture) Set m_Image = newObj End Property '-------------------------------------------------------------------- ' LoadPicture メソッドで、ビットマップ画像を読み込み '-------------------------------------------------------------------- Sub test() Set Image = LoadPicture("C:\image\sample01.bmp") MsgBox Image.Height MsgBox Image.Width Set Image = Nothing End Sub |
実行結果
Range オブジェクトの使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub Sample7() Dim myRange As Range Dim v, i i = 1 Set myRange = Worksheets("Sheet1").Range("B2:D5") For Each v In myRange v.Value = i i = i + 1 Next v myRange.Font.Color = vbRed Set myRange = Nothing End Sub |