VBA

【VBA配列操作:応用編】

Excel VBABOOK

VBA配列の応用操作

これまで何度かにわたってエクセルVBAの配列の入門から、基本操作までを解説してきましたが、今回はVBA配列の高等テクニックを紹介していきたいと思います。

コードは、これまでの入門記事から見ると急に難しくなったように感じるかもしれませんが、ステップを掛けながらローカルウィンドウなどで配列の中身を確認しながら、コードを見ることで理解できると思います。

配列を分割して複数の配列にする

配列をいくつかのパート分けしたい場合があるかと思います。
これを確実に行うにはループ処理を利用します。

次のコードは引数「BaseArray」に指定したバリアント型の1次元配列を「Count」に指定した数ごとに分割したバリアント型の1次元配列を各要素とする二段階配列を返すFunct ionプロシージャです。

いかがでしょうか?
ステップ実行などで理解を深めてみてください。

配列の任意の要素を削除する

配列内の任意の要素を削除する場合も、ループで処理するのが確実です。
上のコード同様「BaseArray」に指定した1次元配列から、引数「Index」に指定した添え字の要素を削除して詰めた1次元配列を返します。

どうですか?
かなり難しいコードに見えますが、やっている事は基本的に配列操作の基本的な内容の組み合わせに過ぎません。

慣れると、この位のコードはスラスラ書けるようになりますので、触って慣れてみてください。

配列の任意の位置に要素を追加

先ほどのサンプルが削除だったので、今度は要素の追加をやっていきましょう。
ここで書くサンプルはループ処理になります。

ループを使うとステップ数が増加してしまいますが、確実で柔軟な処理が可能になります。

削除を理解できた方は簡単に理解できるかと思います。

上の3つのサンプルは慣れると非常に便利なものになっています。
関数化してあるのもその為です。

皆さんも是非、自分なりにアレンジして使ってください。

2次元配列の行列を入れ替える

2次元配列の行列の入れ替えで真っ先に思い浮かぶのは「 Transeposeメソッド」を使用したものだと思います。

ただ、Transepooseメソッドには、細かな制限が多くあるので、ループで処理できる引き出しを持つことも大切です。

まずはループ処理をご覧ください。

続いて、 Transepoosメソッドを使用してみます。

コードは随分すっきりしましたね。

環境に応じて、使い分けてください。

2次元配列の特定行のデータからなる1次元配列を取得

二次元配列の中から1行のみからなる1次元配列を取り出します。

これもやはり、ループ処理を使用するのが確実です。

まとめ

今回は配列の応用ということで、少し高度なコードを書いて見ました。
理解すると、配列操作が得意になると思いますので是非、理解を深めてください。

配列操作を理解することで、皆さんが書くコードの質、速度などが段違いにレベルアップできると思います。

一緒にがんばっていきましょう。

配列操作の説明は、これで一応おわりです。
今度は、ユーザーフォームの使い方などをやっていきたいな、と思っています。
よろしくお願いします。