教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Array関数で指定した要素で作成された配列を返す方法を教えて!

f:id:m_kbou:20210829060057p:plain

 

 

構文

記述方法は以下の通りとなります。

Array([値1],[値2],[値3],・・・)

[説明]:

指定した要素([値1],[値2],[値3],・・・)を一次元配列に変換します。各要素はカンマ(,)で区切り、各要素にはインデックス番号が自動で設定されます。インデックス番号は0から開始され、最初のインデックス番号が0、次は1、その次は2・・・のように順番に設定されます。

[値1] 任意の要素を記述します。
[値2] 任意の要素を記述します。
[値3] 任意の要素を記述します。


上記以外の要素がある場合は、継続して任意の要素を記述します。

[記述例]:

Array("大山", "久保木", "岡田", "落合")
Array(Range("E1"), Range("E2"), Range("E3"), Range("E4"))

 

使い方

使い方について具体的に説明します。

要素へ固定値をセットして配列を作成する方法

要素へ固定値をセットして配列を作成する方法について説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim 配列 As Variant
  Dim 行 As Double
  Dim インデックス番号 As Double

  '↓処理②
  配列 = Array("大山", "久保木", "岡田", "落合")

  '↓処理③
  行 = 1
  For インデックス番号 = 0 To 3
    Range("A" & 行) = 配列(インデックス番号)
    行 = 行 + 1
  Next

End Sub

内容は以下の通りとなります。

[処理①]:変数定義
 各変数定義を行います。
 ※変数:配列はArray関数で取得した要素をセットする変数となります。
  配列をセットする変数はVariantでの指定が必須となります。

[処理②]:Array関数を使用した固定値要素での配列作成
 変数:配列へArray関数にて取得した要素をセットします。
 ※今回は固定値を要素としてセットします。

[処理③]:ループしょりによる配列要素の書き出し
 [処理②]で取得したは変数:配列の内容をFor~Next文にてA列に出力します。
 出力順は配列のインデックス番号順となり、A列1行目~4行目に出力します。
 ※インデックス番号は0から開始されるため、出力時には注意が必要です。

f:id:m_kbou:20210818100435p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210818100449p:plain

②結果は以下の様に表示されます。固定値で指定した要素で作成された配列の内容が、A1セル~A4セルにセットされます。(※配列の要素である"大山"・"久保木"・"岡田"・"落合"が順番に表示されます。)

f:id:m_kbou:20210818100504p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

要素へ固定値をセットして配列を作成する方法についての説明は以上です。

 

要素へ変数値をセットして配列を作成する方法

要素へ変数値をセットして配列を作成する方法について説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim 配列 As Variant
  Dim 行 As Double
  Dim インデックス番号 As Double

  '↓処理②
  配列 = Array(Range("E1"), Range("E2"), Range("E3"), Range("E4"))

  '↓処理③
  行 = 1
  For インデックス番号 = 0 To 3
    Range("A" & 行) = 配列(インデックス番号)
    行 = 行 + 1
  Next

End Sub

内容は以下の通りとなります。

[処理①]:変数定義
 各変数定義を行います。
 ※変数:配列はArray関数で取得した要素をセットする変数となります。
  配列をセットする変数はVariantでの指定が必須となります。

[処理②]:Array関数を使用した変数値要素での配列作成
 変数:配列へArray関数にて取得した要素をセットします。
 ※今回は変数値(セルの値)を要素としてセットします。
  セルの値が変更されると、配列にセットされる値も変わります。

[処理③]:ループしょりによる配列要素の書き出し
 [処理②]で取得したは変数:配列の内容をFor~Next文にてA列に出力します。
 出力順は配列のインデックス番号順となり、A列1行目~4行目に出力します。
 ※インデックス番号は0から開始されるため、出力時には注意が必要です。

f:id:m_kbou:20210818102113p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210818102130p:plain

②結果は以下の様に表示されます。変数値(E1セル~E4セル)で指定した要素で作成された配列の内容が、A1セル~A4セルにセットされます。(※配列の要素である"東京都"・"北海道"・"愛知県"・"兵庫県"が順番に表示されます。)

f:id:m_kbou:20210818102142p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

要素へ変数値をセットして配列を作成する方法についての説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

今回はArray関数で指定した要素で作成された配列を返す方法について説明しました。Array関数と一緒に使用される関数としてLBound関数やUBound関数もあります。こちらも一緒の覚えておいて下さい。