VB6 Memo

配列

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