スポンサードリンク
スポンサードリンク

配列

excel vbaの「配列」を簡単に説明しました。


excelのvbaをマスターしましょう!
excel vba 簡単・解決! Homeへ
配列

excelのvbaで 配列 は、同じデータ型の変数が集まったグループです。


グループのメンバーは、番号でインデックスされ、それにより特定することが出来ます。
例えば、規定値で 0番、1番、2番、・・・と正確に番号を指定する必要があります。
次のマクロ(Sub array_check())を実行すると、次のメッセージが表示されます。
0 0 <-
1 1 <-
2
3
4
5 5 <-
デフォルトでは、インデックス番号は、0 から始まります。 注意しましょう!

Sub array_check()
Dim strBUF(5) As String, intI As Integer, varA As Variant
strBUF(0) = "0 <-"
strBUF(1) = "1 <-"
strBUF(5) = "5 <-"
intI = 0 ' デフォルトの最初のインデックス番号は、0です。
For Each varA In strBUF
MsgBox Str(intI) & " " & varA
intI = intI + 1
Next varA
End Sub

次の図で、デフォルトの配列の変数は、0番、1番、・・・5番とインデックス番号で特定出来ることを示しました。
宣言する方法は、図のように、基本的にインデックス番号の最大値です。 例の図の場合、5です。
この基本的な使用方法以外の場合、問題発生の原因となります。
配列は、変数のPC上のメモリーに記憶される方法の一つです。
しかし、この記事では、ワークシートのセル、配列定数、配列数式などとは別物、と考えました。

配列

1.配列の宣言
  (1)書式
   Dim 変数名(インデックス番号の最大値) As 変数の型
  (2)メンバーの並び方
     Dim a(3) As Integerの場合、次の通りです。
     a(0) a(1) a(2) a(3)

  (3)インデックス番号の範囲の指定方法
    1)Dim strName(100) As String
    2)Dim strName(5 To 100) As String
         インデックス番号は、最小値をLBound関数、最大値をUBound関数で取り出すことが出来ます。
         LBound(strName) は、5です。
         UBound(strName) は、100です。
    3)Dim strName(-200 To 300) As String
        ※ このように負の整数を使用できます。
    4)Dim strName() As String
        ReDim strName(500) As String
        インデックス番号の最大値を省略すると、動的配列になります。
   ※ インデックス番号は、特に指定しない場合、0 から始まります。
      モジュール(Module)の先頭にOption Base 1と書くと、インデックス番号は、1からになります。

2.多次元配列の宣言
  (1)書式
   Dim 変数名(1番目のインデックス番号の最大値, 2番目のインデックス番号の最大値、・・・) As 変数の型
  (2)メンバーの並び方
     Dim a(3、3) As Integerの場合、次の通りです。
     a(0,0) a(0,1) a(0,2) a(0,3) a(1,0) a(1,1) a(1,2) a(1,3) a(2,0) a(2,1) a(2,2) a(2,3) a(3,0) a(3,1) a(3,2) a(3,3)
  (3)インデックス番号の指定方法
     1次元の指定方法を多次元にそのまま拡張できます。

3.動的配列の宣言
    Dim strName() As Stringのようにインデックス番号の最大値を省略すると、動的配列になります。
    これは、配列の大きさを変更できます。 しかし、変数の型を変更することは、原則、できません。
    多次元の配列の場合、最後の次元のサイズだけを変更できます。
※ 注意:Array関数を使用し、配列を定義することが出来ます。
    この場合、データ型は、変数としてVariant型、動的配列となります。

【コラム】 配列を使用した検索
(※ この例は、 find メソッドを使用すると簡単に処理出来ます。詳細は、find記事を参照ください。)
この例は、アクティブワークブックの左から3つのシートを検索対象に、特定のデータを検索します。
Worksheets(1)のA1セルに「ねこ」を入力しました。
次の図は、検索ダイアログが表示され、「すべてを検索」ボタンを押した結果を示しました。

検索

Sub array_test()
Dim intF As Integer
Dim varShar As Variant

varShar = Array(1, 2, 3)
intF = 0
For Each Var In varShar
If intF = 0 Then
Sheets(Var).Select
intF = 1
Else
Sheets(Var).Select False
End If
Next Var

Worksheets(1).Range("A1").Select
SendKeys "^c"
SendKeys "^f"
SendKeys "^v"
SendKeys "{Enter}"
End Sub



excelのvbaをマスターしましょう。


excel vba 簡単・解決! Homeへ
タグ:EXCEL VBA 配列
【基本の最新記事】
posted by Yy at 14:38 | Comment(0) | TrackBack(0) | 基本 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/129485924

この記事へのトラックバック