1.配列変数とは
一般的な変数にはひとつの値しか格納することができません。
しかし、配列変数はいくつ使うかを最初に宣言することで、その分の値を
表示することができるようになります。
以下は、配列変数の使用例です。
例;
Sub hairetu()
Dim 料金(3)
料金(1)=”390円”
料金(2)=”780円”
料金(3)=”1020円”
MsgBox "魚1尾の値段は、" & 料金(1) & "です"
End Sub
この場合、「料金(1)」は390なので、MsgBox(メッセージボックス)には「魚1尾の値段は390円です」と表示されます。
これと同様に、
MsgBox "魚1尾の値段は、" & 料金(2) & "です"
というコードを入力すると、「魚1尾の値段は780円です」と表示されます。
このように、違う変数を複数使いたい場合は、配列変数を使うと、大幅に時間短縮をすることもできますし、コードを入力する量も減るのでコーディングミスを防ぐこともできます。
配列変数は、時間短縮という意味では、For Nextループと一緒に使われることが多いです。以下に例を示します。
例;
Sub data()
Dim a, data(6)
For a = 1 To 6
data(a) = Cells(a, 2)
Next a
For a = 1 To 6
Cells(1, a + 3) = data(a)
Next a
End Sub
A | B | C | D | E | F | G | H | I | |
1 | りんご | りんご | キウイ | みかん | いちご | もも | スイカ | ||
2 | キウイ | ||||||||
3 | みかん | ||||||||
4 | いちご | ||||||||
5 | もも | ||||||||
6 | スイカ | ||||||||
7 | |||||||||
8 | |||||||||
9 |
例のコードを実行すると、黄色い下線の部分が表示されます。
このコードには、For Nextループが2つ使われています。ひとつずつ見ていきましょう。
一つ目のForNextループは、6つのデータの内容を決めるコードです。ここでは、data(a) = Cells(a,2)とあるので、6つのデータがエクセルの2列目にあることを表します。
For a = 1 To 6
data(a) = Cells(a, 2)
Next a
二つ目のForNextループは、データをどこに移動させるかのコードです。Cells(1, a + 3) = data(a)とあるので、エクセルの1段目の、「それぞれのデータの値」+3の位置に変数が入力されることになります。「りんご」の場合だと、「りんご」はdata(1)なので、aの値に1を代入することになるので、「りんご」という変数は、Cells(1, 4)に入力されます。
For a = 1 To 6
Cells(1, a + 3) = data(a)
Next a
また、配列変数を使うときに注意しておきたいことが2つあります。
①データは0からあるということ
配列変数はdata(0)から存在するので、1から使いたい場合は、使う範囲を1 to ~と、1を入力するようにしましょう。
②最初に宣言した値より大きいデータ数は扱えない
たとえば、Dim a, data(15) と宣言した後に、For a = 1 to 20 などと、宣言した値より大きい数のデータは使うことができない。
このように異なる複数の変数を元にある場所から移動させたいときなどに、ForNextループと組み合わせて使うと便利です。
2.配列変数を使うとなぜ便利なのか
異なる複数の変数を使うときに、大幅に時間短縮をすることができます。 また、コードを入力する量も減ってコーディングミスも防ぐことができます。
3.練習問題
プログラムを作成する上で欠かせない乱数に関して、理解できましたか? 以下の練習問題を解いて、定着度を確認してみましょう。
1.メッセージボックスにはなんと表示されるでしょうか?
Sub hairetu()
Dim 料金(3)
料金(1)=”4570円”
料金(2)=”7000円”
料金(3)=”10280円”
MsgBox "ジャケットの値段は、" & 料金(2) & "です"
End Sub
2.以下のコードで間違っている部分はどこでしょうか?
Sub data()
Dim a, data(25)
For a = 1 To 28
data(a) = Cells(a, 2)
Next a
For a = 1 To 28
Cells(1, a + 3) = data(a)
Next a
End Sub
答え
1.ジャケットの値段は、7000円です
2.data(25)と宣言しているのに、ForNextループでは、データ数が28と、宣言した変数よりも多い変数が入力されている。
コメント
最新を表示する
練習問題2の解答ですが、「For Nextループではaが28までの値をとっているが、配列変数dataはdata (25)までしか宣言されていないために、エラーが起きる。data (28)のように、28以上の値を入れて宣言する必要がある」のようにしてはどうでしょうか?
コードを一つ一つ細かく説明してあるので、何を表すコードなのかが分かりやすかった。
最初の例でもメッセージボックスに表示されている画像等を入れたらもっとイメージしやすいかも!
良い点 文章が簡潔でとてもコンパクトにまとめられている。プログラムについての解説を一気にせず、段階に分けて説明しているのでどこの部分がどのように実行されるか細かく見ることが出来る。
改善できる点 3の最初のほうに、「乱数」と入っているが、「配列変数」の書き間違いかなと思う。
プログラムの部分を網掛けにするか、色を変えるなど、更に見やすくまとめてもいいかなと思う。
よかった点
単純に配列変数の例を説明するだけでなく、実際によく使われるfor nextループを用いた上での例を示すことにより、よりわかりやすいと感じた。
改善点
なぜ便利なのかというところにもう少し具体的なケースの説明があるとよりわかりやすいと感じた。
1:最初に配列変数の使用例を提示している事から、配列変数とはどのようなものかイメージができた上で内容理解に入ることができました。
2:各コードにおいて、1行1行の間が広く感じたので、もう少し詰めても良いのではと思いました。
良かった点
図が挿入されていてわかりやすい点
改善できる点
式の部分は背景の色を変えてわかりやすくすると見やすいと思う
メリハリを出すとよりよくなると思う
NG表示方式
NGID一覧