ホーム > カテゴリ > Excel・VBA >

配列/動的配列/構造体/列挙型/エスケープシーケンス[ExcelのVBA]

配列

配列(はいれつ)とは変数の中に複数のデータを格納できる構造となっています。単一の配列を一次元配列、複数の配列を多次元配列と呼びます。

一次元配列

一次元配列の書式は次の通りです。

Dim 変数名(配列の要素数 - 1) As データ型

次は一次元配列の使用例となります。

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」となります。

多次元配列

多次元配列の書式は次の通りです。

Dim 変数名(配列の要素数-1,配列の要素数-1,...) As データ型

次は二次元配列(配列の配列)の使用例となります。

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

多次元配列の使用例は「二次元配列」ですが、三次元配列、四次元配列なども作成する事ができます。但し、次元数が多くなるとプログラムが複雑になりますので二次元配列辺りまでを使用するのが一般的です。

Wikipediaで補足:配列

動的配列

配列の要素数をプログラムの途中で設定する配列を動的配列と呼びます。

動的配列の変数の書式は次の通りです。

Dim 変数名() As データ型

動的配列の変数では「要素数」は記述しません。その代わりに「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 は配列の値を保持して配列を拡張する特性があります。

Wikipediaで補足:動的配列

構造体

構造体は1つから複数のデータをまとめる事ができるユーザー型です。また、構造体は基本的に標準モジュールに定義します。

構造体の書式は次の通りです。

Type 構造体名
 メンバ変数名 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

Wikipediaで補足:構造体

列挙型

列挙型はデータの集合体です。複数のメンバ定数から一つを選択できます。また、列挙型は基本的に標準モジュールに定義します。

列挙型の書式は次の通りです。

Enum 列挙型名
 メンバ定数名 = 数値
 ...
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

Wikipediaで補足:列挙型

エスケープシーケンス

エスケープシーケンスとは特殊文字の事です。

次の表はVBでよく使用される特殊文字と対応する定数の一覧表となります。

特殊文字定数Chr関数
ラインフィード vbLfChr(10)
キャリッジリターンvbCrChr(13)
改行(Win用)vbCrLfChr(13) & Chr(10)
改行(Win or Mac用) vbNewLineChr(13) & Chr(10) または Chr(13)
タブvbTabChr(9)
NULL文字vbNullStringChr(0)

※「改行(Win or Mac用)」のvbNewLineはプラットフォームに適した改行コードが自動的に挿入されます。

「改行(Win or Mac用)」の使用例は次のようになります。

Wikipediaで補足:エスケープシーケンス

Visual Basicの基礎

変数/定数/リテラル/データ型/有効範囲
配列/動的配列/構造体/列挙型/エスケープシーケンス
算術演算子/比較演算子/データの型変換
制御構造(If/For/Select/While/Do)
Sub/Functionプロシージャ(手続き/関数)
クラスの作成と使い方
ファイルの操作
エラートラップ
基本のまとめ(上級者用)

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年06月16日 最終更新日:2015年07月06日
記事NO:01045