set ステートメントを使う
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 |
実行結果
関連記事
-
繰り返し処理(Do…Loop ステートメント)
Do…Loop ステートメントの使い方 【構文 1】 Do [ Wh …
-
引数の参照渡し・値渡し( ByRef, ByVal )
引数の「参照渡し」と「値渡し」 「参照渡し」とはプロシージャに引数として変数を渡 …
-
配列が引数のプロシージャを作成する
配列が引数のプロシージャを作成する 【構文】 { Sub | Function …
-
繰り返し処理(For Each…Next ステートメント)
For Each…Next ステートメントの使い方 【構文】 For …
-
引数を可変にする( ParamArray )
ParamArray キーワード ParamArray キーワードを使用すると任 …
-
プロシージャ内のサブルーチンへ移動(GoSub…Return ステートメント)
GoSub…Return ステートメント GoSub ステートメント …
-
ユーザー定義型変数を使う(Type ステートメント)
Type ステートメントを使う Type ステートメントを使うと1つまたは複数の …
-
条件分岐 If文(If…Then…Else ステートメント)
If…Then…Else ステートメントの使い方 【構文 …
-
省略可能な引数・デフォルト値を設定( Optional キーワード )
Optional キーワード Optional キーワードを使用するとプロシージ …
-
変数やプロシージャのスコープ(適用範囲)
変数やプロシージャのスコープ(適用範囲) 【構文:変数の宣言】 { Dim | …