配列hairetuに"11","22","33","44","55"と入っているとします。
Private Sub CommandButton1_Click() Dim hairetu As Variant Dim i As Long Dim maxnum As Long
hairetu = Array("11", "99", "22", "33", "44")
maxnum = -1
For i = 0 To UBound(hairetu)
If hairetu(i) > maxnum Then
maxnum = hairetu(i)
End If
Next i
MsgBox maxnum
End Sub
一行ずつ解説します。
Dim hairetu As Variant
変数hairetuをバリアント型で宣言します。あとでArray関数を用いて複数の要素を代入し、配列とします。
Dim i As Long Dim maxnum As Long
変数「i」はカウンタ変数です。
変数「maxnum」には配列に代入されると想定される数値より必ず”小さい”数値を入れておきます。
hairetu = Array("11", "99", "22", "33", "44")
maxnum = -1
バリアント型の変数「hairetu」にArray関数を用いて要素を代入することで、配列とします。
変数「maxnum」には代入した要素より小さい数値を代入します。
For i = 0 To UBound(hairetu) If hairetu(i) > maxnum Then maxnum = hairetu(i) End If Next i
UBound関数で配列「hairetu」の要素数を取得し、カウンタ変数「i」を”0~5”にします。
ループされる処理はIF文による条件分岐です。
最初、配列「hairetu」の一番最初の数値「11」が変数maxnumより大きいかが判断されます。
わざと小さい数値を代入しておいたわけですから、当然Trueとなります。
そこでIF文の処理の部分として、変数「maxnum」に、hairetu(0)の値である「11」が入ります。
次のループで、配列「hairetu」の2番目の数値である「99」と現在の変数「maxnum」のどちらが大きいか判断され、変数「maxnum」に「99」が入ります。
以下、For文内で判断が繰り返され、結局、「99」が一番大きいことが分かります。