エクセルVBAのユーザー定義型の宣言について解説しています。
<< 各データ型の特徴と変数宣言 :前の記事
前回は、それぞれのデータ型の特徴を事例を交えて解説してきました。 データ型を間違えると予期せぬ結果をもたらすので、それぞれの特徴を理解した上で正しいデータ型で宣言するようにしましょう。 今回は、この基本的なデータ型以外にユーザーが自由に定義できる型の作成について解説していきます。
ユーザー定義型とは、複数のデータ型を1つにまとめてユーザーが自由に定義できる型のことを言います。例えば整数型(Integer)は整数値のみ、文字列型(String)は文字列のみでほかの異なった値を格納することができません。それに対してユーザー定義型は、異なる型も共存させることができます。
ユーザー定義型は関連性があり、異なるデータ型が複数存在する場合にとても有効な方法です。例えば、顧客情報を管理する場合に顧客情報には名前や年齢、生年月日とこれだけでも3種類の異なったデータ型が混在します。もちろんそれぞれに変数を割り当てても問題ありませんが、ユーザー定義型として割り当てると簡単に管理することができます。
詳細については、事例で解説しますので、先にユーザー定義型の使い方について解説します。尚、ユーザー定義型を作成する場合は、Typeステートメントを利用します。
ユーザー定義型を作成するには、Typeステートメントを利用して以下のように記述します。
Type ユーザー定義型名
要素1(変数・定数名) As データ型
要素2(変数・定数名) As データ型
End Type
Sub Sample()
Dim 変数名 As ユーザー定義型名
変数名.要素1 = 値
変数名.要素2 = 値
End Sub
こちらの事例では、「名前」と「年齢」のユーザー定義型を作成しています。
ユーザー定義型名は「Personal」で、名前の変数Nameに文字列型(String)、年齢の変数Ageにバイト型(Byte)を設定しています。今回は2つだけの設定ですが、扱う要素が多くなればなるほど利便性が高くなります。
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
※ドラッグ(スワイプ)すると全体を確認できます。
複雑なプログラムになるほど利用される変数や定数の数が比例します。また、それらは様々なプロシージャでデータのやり取りを行います。そのような時によくあるのが、変数のデータ型によるエラーです。
例えば、変数aを文字列として利用しているステートメントと数値として利用しているステートメントがあった場合、どちらかでエラーが発生する可能性があります。そのような場合に便利なのが型変換できる関数群です。
一度設定した型宣言は、型変換できるVBA関数を利用すれば簡単に変換することができます。整数型の変数に代入したい場合、文字列型の変数を整数型にすることもできます。他にも以下のようなVBA関数もありますので、一緒に覚えておきましょう。
型変換関数 | 内容 | 事例 |
---|---|---|
CBool | ブール型(Boolean)へのデータ変換 | |
CByte | バイト型(Byte)へのデータ変換 | |
CCur | 通貨型(Currency)へのデータ変換 | |
CDate | 日付型(Date)へのデータ変換 | CDate("00:00:10") 10秒を表すシリアル値へ変換 |
CDbl | 倍精度浮動小数点実数型(Double)へのデータ変換 | CDbl(Now) 現在時刻を表すシリアル値を普通の値へ変換 |
CInt | 整数型(Integer)へのデータ変換 | |
CLng | 長整数型(Long)へのデータ変換 | |
CSng | 単精度浮動小数点実数型(Single)へのデータ変換 | CSng("1.58") 文字列1.58を数値の1.58へ変換 |
CVar | バリアント型(Variant)へのデータ変換 | |
CStr | 文字列型(String)へのデータ変換 | CStr(1000) 数値の1000を文字列へ変換 |
今回はユーザー定義型の作成と宣言について解説しました。また、一度設定した型宣言の変換についてもVBA関数を利用すれば変更できることが分かったかと思います。次回は変数が及ぼす影響の範囲について解説していきます。
次の記事: 変数の適用範囲(スコープ) >>
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
ExcelのVBAについてのQ&A掲示板↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。