ユーザー定義型の宣言と型変換

<< 各データ型の特徴と変数宣言 :前の記事

前回は、それぞれのデータ型の特徴を事例を交えて解説してきました。 データ型を間違えると予期せぬ結果をもたらすので、それぞれの特徴を理解した上で正しいデータ型で宣言するようにしましょう。 今回は、この基本的なデータ型以外にユーザーが自由に定義できる型の作成について解説していきます。

目次

ユーザー定義型とは

ユーザー定義型とは、複数のデータ型を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関数を利用すれば変更できることが分かったかと思います。次回は変数が及ぼす影響の範囲について解説していきます。

次の記事: 変数の適用範囲(スコープ) >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

  • このエントリーをはてなブックマークに追加
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。