みなさん、VBAのコードを書くときに配列を使っておりますでしょうか?
- 使わなくてもコードが書ける
- 難しそう…
- そもそも知らない
などなどの理由で、使ってない方も多いのではと思っています。
かくいう私も、勉強し始めの時は難しそうで見て見ぬふりをしていました^^;
あと、何が便利なのかよくわからなかったというのも、勉強する気にならなかった理由でもあります。
なので今回は、
- 配列って何?(ざっくりと)
- どういうときに使うと便利なの?
- これだけ知っておけばとりあえず使える
の3点に絞ってお伝えしようと思います。
難しそうという苦手意識を無くしてもらって、とりあえず使えるようになってもらうのが目的です。苦手意識がなくなって配列を多用するようになったら、その時に改めて便利に使える追加知識を調べてもらえればと思います。
配列が使えればなにかと便利!とりあえず苦手意識が無くなってくれれば嬉しいです(^^)/
配列って何?(ざっくりと)
タイトルにある通り、ざっくりと説明します!(笑)
配列は変数の一種です。
i という変数をみなさんよく使うと思うのですが、変数にはいろいろな文字や数字入れられます。
i = 1
Name = りんご
とかですね。
上記の例の変数の場合だと、1つの変数に1つの数字や文字しか入れられないのですが、配列だと複数の数字や文字を入れることができます。
Fruit= りんご、みかん、ぶどう
みたいな感じです。(簡単にするために、ちょっと正確ではない表現になってますのでご容赦ください)
配列の説明で、よくこういう図を見ると思います。
変数は箱が1つ、配列は箱が複数あるから1つ以上の値が入るんだよ
っていう説明のイメージ図ですね。
さて、1つの配列に複数の値が入れられることはわかりました。
で?
ってなりますよね^^;
複数の値を入れられるのって何が便利なんでしょう?いろいろ使えるシチュエーションはあるのですが、わかりやすい例を1つ挙げてみようと思います。
どういうときに使うと便利なの?
先ほどの果物の名前を使って説明してみます。
りんご、みかん、ぶどうを変数に入れて使いたい!となった時、変数と配列だと書き方がこのように違います。
~変数の場合~
Fruit_1 = “りんご”
Fruit_2 = “みかん“
Fruit_3 = “ぶどう”
~配列の場合~
Fruit= Array(“りんご”,”みかん”,”ぶどう“)
変数だと3つ入れ物を準備しなければいけないのに対し、配列だと1つで済むんです。
Dimで変数宣言するの、地味に大変じゃないですか?(私だけ??)
更に更に、こんな表のデータを扱いたいよ、っていう時にはもっと大変なことになります。
Name1 = “山田”
Math1 = 84
English1 = 82
Science1= 90
という感じで30個くらいの変数を延々と作っていくことになります。
これも、配列であれば1つの配列を準備すれば事足ります。
左の図を配列に代入した結果が右になります。
・・・。
はい、ちょっとややこしくなってきましたね^^;
Scoreという名前の配列を1つ用意して、その中に表のデータが全部入っています。
Score(0,0) “山田”
のように、配列の名前の後に番号が振られているのですが、複数のデータを入れたいので番号をつけて区別をしているんですね。
変数の場合だと
Name1 = “山田”
Math1 = 84
English1 = 82
Science1= 90
という変数名だったのが、
Score(0,0) = “山田”
Score(0,1) = 84
Score(0,2) = 82
Score(0,3)= 90
という変数名になっている、というイメージです。
というわけで、結論としては
たくさんのまとまった変数を扱いたいときに便利だよ!
ということです。
今回の例でいうと、Score(0)には山田さんの名前と点数が、Score(1)には田中さんの名前と点数が、という感じでグループごとに分かれて配列の中に入れられてるので、扱いやすくなるわけです。
それでは、実際に使ってみましょう!
これだけ知っておけば配列が使える
1.宣言
使うためには変数と同様に、使うためにはまず宣言が必要です。
Dim 配列名() As データ型
変数との違いは名前の後ろに()がついていることです。これは、配列の中にいくつの情報が入るかを指定するためのものです。変数の場合は1つだったからわざわざ”1つです”と指定しなくてもよかったわけですね。
例えば冒頭で例に挙げた「りんご、みかん、ぶどう」が入る配列だとどうなるかというと、
Dim Fruit(2) As String
となります。
なんで括弧の中が3ではなく2なのかというと、番号を0から始めているからです。
Fruit(0)にりんご、Fruit(1)にみかん、Fruit(2)にぶどうが入るので、2までで足りるんですね。(図の番号とずれてますが^^;
2.値を代入
それでは、配列に果物の名前を入れてみます。
Sub 配列()
Dim Fruit(2) As String
Fruit(0) = "りんご"
Fruit(1) = "みかん"
Fruit(2) = "ぶどう"
End Sub
このように、Fruit(0) = “りんご” 、Fruit(1) = “みかん”と配列に入るひとつひとつ代入していく方法があります。
別の方法でも値を代入してみましょう。よく発生するのがエクセルのシートに書かれている値などを代入するパターンです。
このような場合だと、コードは下記のようになります。
Sub 配列2()
Dim Fruit(2) As String
Dim i As Long
For i = 0 To 2
Fruit(i) = Cells(i + 1, 1)
Next i
End Sub
For文を使って1列目のセルのデータを配列に代入しています。1点注意が必要なのが、配列は0からスタートしていて、行番号は1からスタートしている点です。
3.値を代入(For文を使わないVer)
もう一つ、最初の例で出てきた下記の成績表のデータを配列に代入してみましょう。
先ほどはFor文を使って1個ずつ代入しましたが、数が多いと面倒なので範囲を指定して一気に代入してしまいましょう。
Sub 配列3()
Dim Score() As Variant
Score = Range("B1:G5")
End Sub
範囲を指定して代入する場合は、宣言の時に配列のサイズの宣言が不要になります。表が大きいと数えるのが面倒なので、サイズの宣言は無い方がラクですね。
実際に配列を使うときは、表のデータをまるっと配列に代入することが多いので「3.値を代入(For文を使わないVer)」を使う場合が一番多いです。(私の場合は)
- 変数と同じように宣言して、変数名の後ろに()を付ける。
- Rangeを使って範囲を指定して代入する
の2行で作成できますので、入れれる文字の量が多い変数という感覚で、ぜひ配列を使ってみてください。
解説動画
動画にて解説をしております。実際の画面を見ながらの方がわかりやすいと思いますので、ぜひこちらも見てみてください。
まとめ
今回は配列を使えるようになってみよう、ということでざっくりとした説明をしてみました。
よくわからないから使ってないよ、っていう方の参考になればうれしいです。
この記事がどなたかの参考になれば嬉しいです。
お問い合わせ、お仕事のご依頼などがありましたら下記のお問い合わせフォームからご連絡お願いします。
お問い合わせフォーム
VBAの作成であれば3万円ほどから、自分で使うVBAの書き方で詰まっている方のお手伝いであれば5,000円ほどから承ります。
コメント