【マクロVBA】複数の2次配列内(Variant)のセル・指定位置に数値・文字を入力・出力する方法

便利技

マクロVBAの機能には配列というとても便利な機能が存在します。

しかし「data(5)」のように複数の配列の中から数値・文字を入力・出力するには
悩まれる方も多いのではないでしょうか。

そこで今回は複数の2次配列内の入力・出力方法について紹介したいと思います。
それでは見ていきましょう。




⬛︎こんなことができるようになる。

・複数の2次配列内の指定位置・セルの文字数値を入力・出力できるようになる

⬛︎通常の2次配列内の指定位置・セルの文字を入出力する

まず初めに通常の2次配列内の指定した位置・セルから文字・数値を出力、または入力してみましょう。
見本で以下のシートを用意しました。

内容としては「B3からE5」までを配列に格納して
配列内に入力したのち、「G3からJ5」に貼り付けます。

プログラムはこのようになります。

Sub 配列見本()

Dim Data

Data = Range(“B3:E5”)

Range(“G3:J5”) = Data

End Sub

実行した結果こちら。

上手く配列に格納して、貼り付けもできています。
では配列内の指定位置に数値を入力するプログラムを作成していきましょう。

例えば3行目の5列目にあたる、「E3」は「cells(3,5)」ですが、同じ要領で
2次配列に格納した3行目の5列目は「変数名(3,5)」となります。

では再度見本を見ていきましょう。
「B3からE5」を配列に格納して配列内の2行目の3行目「123」を入力し、
「G3からJ5」に格納した配列を出力します。

プログラムはこのようになります。

Sub 配列見本()

Dim Data

Data = Range(“B3:E5”)
Data(2, 3) = 123

Range(“G3:J5”) = Data

End Sub

実行した結果はこちらです。

格納した配列に変数に文字・数値を入力して、その配列を
別のセルに貼り付けることができるようになりました。

 

こちらの方法は処理の高速化にも応用できます。
例えばセル内の文字数値の計算をする際に計算する回数が多ければ
処理速度は遅くなってしまいます。

そこで計算したい数値を配列に格納して
配列内で計算させて、最後にセルに出力することで、
処理速度はとても速くなります。

詳しい方法については下記リンクに貼り付けてますので是非参考にしてみてください。

【マクロVBA知識 高速化②】あまり知られていない?大量データで処理が遅いマクロVBAを高速化 ► 独学エクセル塾 (dokugakuexcel.com)

⬛︎連続した2次配列内の指定位置・セルに入力・出力をする方法

では連続した2次配列の方法を見てみましょう。
例えば「N(5)」のようにNという配列を5つ活用することができます。

例を見ていきましょう。

「B2からE3」「B5からE6」「B8からE9」「B11からE12」「B14からE15」を
Nという配列に格納してみましょう。

そして出力したい配列を変数「Number」で指定したいとします。
プログラムはこのようになります。

Sub 二次配列見本()

Dim N(5), Number As Long

Number = 2 ‘表示したい配列番号を入力

 

N(1) = Range(“B2:E3”)
N(2) = Range(“B5:E6”)
N(3) = Range(“B8:E9”)
N(4) = Range(“B11:E12”)
N(5) = Range(“B14:E15”)

 

Range(“G8:J9”) = N(Number)

End Sub

今回は変数「Number」を2で実行してみましょう。
結果はこのようになります。

N(2)の配列を貼り付けることができました。
さらに「number」を4で実行すると、、、

Sub 二次配列見本()

Dim N(5), Number As Long

Number = 4 ‘表示したい配列番号を入力

N(1) = Range(“B2:E3”)
N(2) = Range(“B5:E6”)
N(3) = Range(“B8:E9”)
N(4) = Range(“B11:E12”)
N(5) = Range(“B14:E15”)

Range(“G8:J9”) = N(Number)

End Sub

N(4)の配列を貼り付けることができました。

 

では本題です。
複数の配列の中の位置・セルに入力・出力をしてみましょう。

1つの配列だと「変数(行数,列数)」でしたね。
複数の配列の場合は「変数(配列数)(行数,列数)」となります。

では実際にプログラムにて確認していきましょう。
先ほどの見本を活用し、N(Number)の1行目3列目に「456」を入力して
配列N(Number)をG8からJ9に貼り付けましょう。

今回はN(3)の配列を貼り付けたいと思います。

プログラムはこのようになります。

Sub 二次配列見本()

Dim N(5), Number As Long

Number = 3 ‘表示したい配列番号を入力

N(1) = Range(“B2:E3”)
N(2) = Range(“B5:E6”)
N(3) = Range(“B8:E9”)
N(4) = Range(“B11:E12”)
N(5) = Range(“B14:E15”)

N(Number)(1, 3) = 456

Range(“G8:J9”) = N(Number)

End Sub

実行した結果はこちらです。

複数の配列内の指定した位置にも数値を格納できていますね。
もちろん計算させることも可能です。

⬛︎まとめ

いかがだったでしょうか。
2次配列は複数のセルを格納できたり、配列の数も変えれたりと、とても便利です。

しかし初心者のかたは慣れるまで習得しにくく
できることも十分に理解するまで時間がかかるように思います。

是非配列の知識を身につけて
活用してみてください。

それでは次回の記事でお会いしましょう。

コメント