Typeステートメント
こちらでは、VBAのIE(InternetExplorer)操作に利用されたTypeステートメントの解説になります。
ステートメントとは、「命令文」と訳されるように、コンピュータに具体的な動作を指定する最小単位のプログラムです。主にマクロの挙動を制御する構文や文法を指します。通常は1行で完結する部分を指しますが、If~Thenなど複数行にまたがる部分を意味することもあります。
目次
Typeステートメントとは
Typeステートメントは、1 つまたは複数の要素を持つユーザー定義のデータ型 (ユーザー定義型) を宣言します。モジュール レベルで使います。
Type ユーザー定義型名 要素1(変数・定数名) As データ型 要素2(変数・定数名) As データ型End Type
構文 | [Private | Public] Type varnameelementname [([subscripts])] As type[elementname [([subscripts])] As type]. . . | |
---|---|---|
キーワード | 省略 | 説明 |
Public | ● | 省略可能です。すべてのプロジェクトのすべてのモジュールのどのプロシージャからも参照できるユーザー定義型を宣言するときに指定します。 |
Private | ● | 省略可能です。宣言が行われたモジュール内でのみ参照できるユーザー定義型を宣言するときに指定します。 |
varname | × | 必ず指定します。宣言するユーザー定義型の名前です。変数の標準的な名前付け規則に従って指定します。 |
elementname | × | 必ず指定します。ユーザー定義型を構成する要素の名前です。要素名は、変数の標準的な名前付け規則に従って指定します。ただし、キーワードを使うこともできます。 |
subscripts | ● | 省略可能です。ユーザー定義型を構成する要素の名前です。要素名は、変数の標準的な名前付け規則に従って指定します。ただし、キーワードを使うこともできます。 |
type | × | 必ず指定します。要素のデータ型を指定します。バイト型 (Byte)、ブール型 (Boolean)、整数型 (Integer)、長整数型 (Long)、通貨型 (Currency)、単精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double)、10 進型 (Decimal) (現在はサポートされていません)、日付型 (Date)、文字列型 (String) (可変長の場合は String、固定長の場合は String * length)、オブジェクト型 (Object)、バリアント型 (Variant)、ほかのユーザー定義型、オブジェクトの種類のいずれかを指定できます。 |
Type ステートメントは、モジュール レベルでのみ使用できます。Type ステートメントでユーザー定義型を宣言すると、その宣言の適用範囲内であれば、どこからでもその型の変数を宣言できるようになります。ユーザー定義型の変数の宣言には、Dim、Private、Public、ReDim、または Static のいずれかのステートメントを使います。
標準モジュールでは、ユーザー定義型は既定でパブリックになり、その適用範囲はキーワード Public で変更できます。クラス モジュールでは、ユーザー定義型は常にプライベートになり、適用範囲はキーワード Public では変更できません。
Type...End Type ブロック内では、行番号と行ラベルは使えません。
ユーザー定義型は、データ型の異なる多数の関連する要素で構成されるデータ レコードでよく使われます。次の例は、ユーザー定義型の中に固定サイズの配列を含めたものです。
Type StateData
CityCode (1 To 100) As Integer ' サイズ固定型 (静的) 配列を宣言します。
County As String * 30
End Type
Dim Washington(1 To 100) As StateData
この例では、StateData には固定サイズの配列 CityCode が含まれており、レコード Washington は StateData と同じ構造になっています。
ユーザー定義型の中で固定サイズの配列を宣言する場合は、変数ではなく数値リテラルまたは数値定数を使って、次元を宣言する必要があります。
Typeステートメントのサンプルコード
Type Personal
Name As String
Age As Byte
End Type
Sub sample()
Dim perA As Personal
perA.Name = "鈴木"
perA.Age = 20
MsgBox "名前:" & perA.Name & ", 年齢:" & perA.Age
End Sub
実行結果
解説
こちらの事例では、「名前」と「年齢」のユーザー定義型を作成しています。
ユーザー定義型名はPersonalで、名前の変数Nameに文字列型(String)、年齢の変数Ageにバイト型(Byte)を設定しています。今回は2つだけの設定ですが、扱う要素が多くなればなるほど利便性が高くなります。
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。