配列を使おう

サンプルコードではデータ数はそれほどでもありませんが、実際扱う変数の数は
膨大なものがあるはずです。それをいちいち読んだり書いたりしていたのでは
不便になってきます。そこで配列があります。


■ この章で学ぶこと

TOPに戻る

配列について1(定義、代入)

以下のコードを入力して実行してください。

Sub 配列1()
 
  Dim BaseballTeam As Variant
  
  BaseballTeam = Array("阪神", "巨人", "ヤクルト")
  Range("A1") = BaseballTeam(0)
  Range("A2") = BaseballTeam(1)
  Range("A3") = BaseballTeam(2)

End Sub
  1. Dim BaseballTeam As Variant
    まず、BaseballTeamという変数を宣言しています。ここで変数は
    Variantにしていますが、この配列の定義の仕方だとVariantで定義
    する必要があることを覚えておいてください。これは、Arrayの戻り値が
    Variantであるからという理由とのことですがあまり深く考えないで
    使い込んでみましょう。
     

  2. BaseballTeam = Array("阪神","巨人","ヤクルト")
    配列を作っています。0番目に阪神、1番目に巨人、2番目
    にヤクルトを入れています。注意しないといけないのは0番目
    があるため、3つの配列を定義した場合、0,1,2という順序で
    配列が代入されるということです。

「配列を使おう」最初に戻る

配列について2(定義、代入)

以下のコードを入力して実行してください。

Sub 配列2()
 
  Dim BaseballTeam() As String
  ReDim BaseballTeam(2)

  BaseballTeam(0) = "阪神"
  BaseballTeam(1) = "巨人"
  BaseballTeam(2) = "ヤクルト"
  
  Range("A1") = BaseballTeam(0)
  Range("A2") = BaseballTeam(1)
  Range("A3") = BaseballTeam(2)

End Sub
 
  1. Dim BaseballTeam() As String
    @ではVariantで定義しましたがここでは、あらかじめ配列であることを宣言して
    String型で定義しています。 

  2. ReDim BaseballTeam(2)
    配列BaseballTeamに入れ物を3つ用意しなさいという命令です。

  3. BaseballTeam(0) = "阪神"
    0番目に阪神を代入しています。1番目、2番目も同様です。

こちらの方がデータ型を定義できるのと、各配列に代入する方法が
容易となっているため、こちらの方が使い勝手がよいと思われます。

「配列を使おう」最初に戻る



動的配列

以下のコードを入力して実行してください(右下図のようにセルに文字を入力してください)。

配列説明
Sub 動的配列()

 Dim ClassMate() As String
 Dim RowPos As Integer
 
 '1列目から開始するので1を代入
 RowPos = 1
 
  Do
   ReDim Preserve ClassMate(RowPos - 1)
   ClassMate(RowPos - 1) = Cells(RowPos, 1)
   RowPos = RowPos + 1
  Loop While Cells(RowPos, 1) <> ""
 
End Sub

Do〜Loop Whileでセルが空白になるまで配列に文字を挿入していきます。
(もちろん定義次第では数字でも何でも良い)

  1. ReDim Preserve ClassMate(○)
    動的配列を使用する場合には必ず使用します。
    頭にたたき込んでおいた方がよいでしょう。
    ClassMateという配列の(○-1番目)までの値をそのままにして
    配列○番目の入れ物を作りなさいということになります。
    もしRedim ClassMate(○)という命令にしてしまうとあらたに○個の
    入れ物群を作ってしまうので、それまでに代入した文字はすべて
    消えてしまうことになります(一度やってみてください)。
     

  2. RowPos-1
    随所で不自然に1を引いています。これはセルの行数は1から始まるのに対して
    配列は0から始まるからです。別に無理矢理1を引くことはないのかも知れませんが
    ここではあえてそういうやり方をしました。

「配列を使おう」最初に戻る


// このWebサイトのご意見・ご感想はvb@tentant.comまで //

Copyright (C) 2004 visualbasic.tentant.com.All righs reserved