VBの配列の添字は、宣言時には添字の最大値が入ります。要素の数ではありません。添字の最小値の既定値は0なので、注意が必要です。
Dim Counters(14) As Integer ' 15 個の要素を持つ配列 Dim Sums(20) As Double ' 21 個の要素を持つ配列 Dim Counters(1 To 15) As Integer ' 1〜15 までの 15 個の要素を持つ配列 Dim Sums(100 To 120) As String ' 100〜120 までの 21 個の要素を持つ配列
どうしても添字の最小値の既定値を1に変更したい場合はOption Baseステートメントで変更出来ますが、モジュール単位でしか変更できません。つまり、既定の最小添え字=0が推奨です。
Option base 1 ' 配列の添字の既定値を 1 に設定します。 Dim Lower Dim MyArray(20), TwoDArray(3, 4) ' 配列変数を宣言します。 Dim ZeroArray(0 To 5) ' 添字の既定の最小値を変更します。 ' 配列の添字の最小値を求めるには、LBound 関数を使います。 Lower = LBound(MyArray) ' 1 が返ります。 Lower = LBound(TwoDArray, 2) ' 1 が返ります。 Lower = LBound(ZeroArray) ' 0 が返ります。
VB用語では「ユーザー定義型」と呼ばれる型です。C言語での構造体に相当します。データ記憶機能のみを持つオブジェクトとも言えるでしょう。
Private Type EmployeeRecord ' ユーザー定義型を作成します。 ID As Integer ' データ型の要素を定義します。 Name As String * 20 Address As String * 30 Phone As Long HireDate As Date End Type Private Sub CreateRecord() Dim MyRecord As EmployeeRecord ' 変数を宣言します。 MyRecord.ID = 12003 ' 要素に値を代入します。 End Sub
列挙型は、関連する複数の定数を使わなければならない場合に便利です。コード内で無意味な定数を操作するよりも、列挙型で関連付けた名前(文字列)で操作した方が、ミスを減らす事ができます。
Private Enum MotorcycleMaker Honda Yamaha Suzuki Kawasaki Other End Enum Private Sub Sample() Debug.Print "MotorcycleMaker.Honda = " & MotorcycleMaker.Honda End Sub
列挙型で関連付けられる最初の定数の規定値は0です。代入ステートメントを使えば、明示的に任意の定数を代入できます。ただし長整数型(Long)として代入されます。
Private Enum Palette Black = &h000000 Red = &hFF0000 Lime = &h00FF00 Blue = &h0000FF White = &hFFFFFF End Enum
VB6のループ構造には3種類が用意されています。
古い構文として"While...Wend"も使えますが、Do...Loopが推奨されています。Do...Loopのループ条件には、Whileキーワードの他にUntilキーワードも使えます。
Do While condition statements Loop Do Until condition statements Loop
また、Do...Loopでは、ループ条件をDoステートメントかLoopステートメントのどちらかに記述しますが、コードの見通しの良さを考慮すると、Doステートメントに含める方が良いです。
Do Until condition ' 望ましい例 statements Loop Do ' できれば変更した方が良い statements Loop Until condition