配列/動的配列/構造体/列挙型/エスケープシーケンス[ExcelのVBA]
配列
配列(はいれつ)とは変数の中に複数のデータを格納できる構造となっています。単一の配列を一次元配列、複数の配列を多次元配列と呼びます。
一次元配列
一次元配列の書式は次の通りです。
次は一次元配列の使用例となります。
Private Sub CommandButton1_Click() Dim A(2) As Integer ' 3つの要素がある1次元配列を定義する A(0) = 1 ' 変数Aの0番目の要素に「1」を代入 A(1) = 2 ' 変数Aの1番目の要素に「2」を代入 A(2) = 3 ' 変数Aの2番目の要素に「3」を代入 ' 変数Aの3つの要素を加算する(結果は6となります) MsgBox (A(0) + A(1) + A(2)) End Sub
配列の要素は「0」から始まります。ですので配列の要素数を定義する場合は「配列の要素数 - 1」となります。
多次元配列
多次元配列の書式は次の通りです。
次は二次元配列(配列の配列)の使用例となります。
Private Sub CommandButton1_Click() Dim A(1, 1) As Integer ' 二次元配列を定義する A(0, 0) = 1 ' 0番目の要素にある配列の0番目の要素に「1」を代入 A(0, 1) = 2 ' 0番目の要素にある配列の1番目の要素に「2」を代入 A(1, 0) = 3 ' 1番目の要素にある配列の0番目の要素に「3」を代入 A(1, 1) = 4 ' 1番目の要素にある配列の1番目の要素に「4」を代入 ' 変数Aの二次元配列の値を加算する(結果は10となります) MsgBox (A(0, 0) + A(0, 1) + A(1, 0) + A(1, 1)) End Sub
多次元配列の使用例は「二次元配列」ですが、三次元配列、四次元配列なども作成する事ができます。但し、次元数が多くなるとプログラムが複雑になりますので二次元配列辺りまでを使用するのが一般的です。
動的配列
配列の要素数をプログラムの途中で設定する配列を動的配列と呼びます。
動的配列の変数の書式は次の通りです。
動的配列の変数では「要素数」は記述しません。その代わりに「ReDim」または「ReDim Preserve」で要素数を設定します。
ReDimステートメント
ReDimステートメントの使用例となります。
Private Sub CommandButton1_Click() Dim A() As Integer ' 動的配列を定義 ' 変数Aの配列の要素を3個とする(0から始まる為) ReDim A(2) A(0) = 1 A(1) = 2 A(2) = 3 ' 結果は「6」となります MsgBox (A(0) + A(1) + A(2)) End Sub
ReDimは配列の値をクリアした後に配列を拡張する特性があります。
ReDim Preserveステートメント
Private Sub CommandButton1_Click() Dim A() As Integer ' 動的配列を定義 ' 変数Aの配列の要素を3個とする(0から始まる為) ReDim A(2) A(0) = 1 A(1) = 2 A(2) = 3 ' 変数Aの配列の要素を5個とする(配列の内容は保持される) ReDim Preserve A(4) A(3) = 4 A(4) = 5 ' 結果は「15」となります MsgBox (A(0) + A(1) + A(2) + A(3) + A(4)) End Sub
ReDim Preserve は配列の値を保持して配列を拡張する特性があります。
構造体
構造体は1つから複数のデータをまとめる事ができるユーザー型です。また、構造体は基本的に標準モジュールに定義します。
構造体の書式は次の通りです。
メンバ変数名 As データ型
...
End Type
次は構造体の使用例となります。
' --- 標準モジュール --- ' Webサイトの情報を保持するWebSite構造体 Public Type WebSite Url As String ' WebサイトのUrl Title As String ' Webサイトのタイトル End Type ' --- フォームまたはシート --- Private Sub CommandButton1_Click() Dim A As WebSite ' WebSite構造体を定義 A.Url = "http://www.petitmonte.com/" A.Title = "プチモンテ" ' 結果は「プチモンテ」となります MsgBox (A.Title) End Sub
列挙型
列挙型はデータの集合体です。複数のメンバ定数から一つを選択できます。また、列挙型は基本的に標準モジュールに定義します。
列挙型の書式は次の通りです。
メンバ定数名 = 数値
...
End Enum
次は列挙型の使用例となります。
' --- 標準モジュール --- ' 曜日の集合体のDay_of_the_Week列挙型 Public Enum Day_of_the_Week Sunday = 0 Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 End Enum ' --- フォームまたはシート --- Private Sub CommandButton1_Click() ' 結果は「5」となります。 MsgBox (Day_of_the_Week.Friday) End Sub
エスケープシーケンス
エスケープシーケンスとは特殊文字の事です。
次の表はVBでよく使用される特殊文字と対応する定数の一覧表となります。
特殊文字 | 定数 | Chr関数 |
---|---|---|
ラインフィード | vbLf | Chr(10) |
キャリッジリターン | vbCr | Chr(13) |
改行(Win用) | vbCrLf | Chr(13) & Chr(10) |
改行(Win or Mac用) | vbNewLine | Chr(13) & Chr(10) または Chr(13) |
タブ | vbTab | Chr(9) |
NULL文字 | vbNullString | Chr(0) |
※「改行(Win or Mac用)」のvbNewLineはプラットフォームに適した改行コードが自動的に挿入されます。
「改行(Win or Mac用)」の使用例は次のようになります。
Visual Basicの基礎
変数/定数/リテラル/データ型/有効範囲
配列/動的配列/構造体/列挙型/エスケープシーケンス
算術演算子/比較演算子/データの型変換
制御構造(If/For/Select/While/Do)
Sub/Functionプロシージャ(手続き/関数)
クラスの作成と使い方
ファイルの操作
エラートラップ
基本のまとめ(上級者用)