配列かIsArrayで調べ、LBoundとUBoundの要素数でループする:Access VBA

配列として宣言されているかどうか調べるにはIsArray関数を使用します。

配列を要素数でループする場合、LBoundで要素の下限とUBoundで上限を取得しループします。

ここでは2つのボタンを配置したフォームを作成します。

1つ目のボタンで、ReDimを使い配列を宣言し、値を代入します。

2つ目のボタンで、LBoundとUBoundをループで使い配列から取り出しテキストボックスに表示します。




BackHome BackTips Backメニュー

■ ReDimを使い配列を宣言し、値を代入する

下のようなフォームを作成しました。
[配列にセット]のコマンドボタンをクリックすると、イベントで配列に代入します。
[配列にセット]のコマンドボタン

配列を宣言し代入するVBA
配列を宣言し代入するVBA

VBAの解説

・代入と取り出しの両方のプロシージャで使用する配列の変数を、フォームのモジュールに宣言します。
・ReDimで配列を宣言します。 通常要素の下限は0か1にしますが、ここではテストなので3にしました。
・Forループで作成した配列に値を代入します。

Private tAry As Variant
Private Sub コマンド0_Click()
    Dim i As Long
    
    ReDim tAry(3 To 15)
    
    For i = 3 To 15
        tAry(i) = i * 10
    Next
End Sub

■ LBoundとUBoundで要素の下限と上限を取得しループする

フォームに[配列から取り出し]ボタンと、取り出した値を表示するテキストボックスを配置します。
フォームにボタンとテキストボックスを配置

配列からデータを取り出すVBAです。
配列からデータを取り出すVBA

VBAの解説

・If IsArrayで配列かどうか調べます。 Falseが返れば配列でないのでプロシージャからExitで抜けます。
・Forループの開始値をLBoundでセットし、終了値をUBoundでセットしています。

Private Sub コマンド1_Click()
    Dim i As Long
    
    If IsArray(tAry) = False Then
        MsgBox "配列が宣言されていません"
        Exit Sub
    End If
    
    Me!テキスト2 = Null
    For i = LBound(tAry) To UBound(tAry)
        Me!テキスト2 = Me!テキスト2 & tAry(i) & vbCrLf
    Next
End Sub

実行結果です。
要素の下限を3にしたので、配列のインデックスが3の値から表示されています。
[配列にセット]をしないで取出しを行った場合、IsArray関数で判定され実行できません。
配列のインデックスが3の値から表示されている


BackHome BackTips Backメニュー

Copyright(C) FeedSoft