| If...Then...[Else] |
|
・If...Then...Elseステートメントを使用すると、条件式の評価に
基づいて、ステートメントを実行することができます。
◎使用例
Private Sub tb01_AfterUpdate()
'tb01の値が55の場合は、nCodeの値は2になります。
Dim nID As Integer
Dim nCode As Integer
nID = Me.tb01
If nID < 10 Then
nCode = 1
ElseIf nID < 100 Then
nCode = 2
Else
nCode = 3
End If
End Sub |
| Select Case |
|
・Select Caseステートメントを使用すると、値のリストまたは
値の範囲と比較する式の評価に基づいて、条件付きでステートメント
を実行することができます
◎使用例
Private Sub tb01_AfterUpdate()
'tb01の値が硬貨の金額なら、それぞれのメッセージを表示します。
Dim nCoin As Integer
Dim sMsg As String
nCoin = Me.tb01
Select Case nCoin
Case 1
sMsg = "一円玉"
Case 5
sMsg = "五円玉"
Case 10
sMsg = "十円玉"
Case 50
sMsg = "五十円玉"
Case 100
sMsg = "百円玉"
Case 500
sMsg = "五百円玉"
Case Else
sMsg = ""
End Select
If sMsg <> "" Then
MsgBox sMsg & "ですよ"
End If
End Sub |
| For...Next |
|
・For...Next構文を使用すると、指定した回数だけ、
一連のステートメントを実行することができます。
◎使用例
Private Sub tb01_AfterUpdate()
'30回Beepを鳴らします
Dim i As Integer
For i = 1 To 30
Beep
Next
End Sub
☆ For...Next の使用例2
Private Sub tb01_AfterUpdate()
・入力された5倍のBeepを鳴らします。
・ループの入れ子になっています。この場合はカウンタ変数名iと
jは省略出来ません。
・またこの例ではiの終了値が変数になっています。
Dim i As Integer
Dim j As Integer
Dim nInput As Integer
nInput = Me.tb01
For i = 1 To nInput
For j = 1 To 5
Beep
Next j
Next i
End Sub |
| For Each...Next |
|
・For Each...Next構文を使用すると、
コレクションまたは配列内の各アイテムに対して一連の
ステートメントを実行することができます。
◎使用例
・配列TestArrayに配列のインデックス値+100を代入します
Dim TestArray(10) As Integer
Dim I As Variant
For Each I In TestArray
TestArray(I) = I+100
Next I |
| Do...Loop |
|
・Do...Loopステートメントを使用すると、繰り返し実行するステートメント
のブロックを定義することができます。条件を満たしたときに、ループを
終了するように定義することもできます。
◎使用例
・テーブルのレコードが最終行の後EOFまで処理を繰り返します。
Dim sSql99 As String
Dim Rs99 As New ADODB.Recordset
Dim i As Long
'MSDEに接続
Set cnn = CurrentProject.Connection
'配列の再設定とクリアー
ReDim DenpyoRec(1)
i = 0
sSql99 = "select * "
sSql99 = sSql99 & " from " & pTbl
sSql99 = sSql99 & " where D_NO ='" & pNo & "'"
sSql99 = sSql99 & " order by G_KUBUN"
Rs99.Open sSql99, cnn, adOpenDynamic, adLockReadOnly
If Not Rs99.EOF Then
Rs99.MoveFirst
Do While Not Rs99.EOF
i = i + 1
DenpyoRec(i).D_NO = Rs99![D_NO]
DenpyoRec(i).G_KUBUN = Rs99![G_KUBUN]
DenpyoRec(i).S_KUBUN = Rs99![S_KUBUN]
Rs99.MoveNext
Loop
End If
Rs99.Close |
| Call |
| ・Call構文を使用すると、Subプロシージャへ制御を移すことができます。
・Call文で分岐した後は、呼び出し側の次の構文に戻ります。
・Callは省略可能ですが、プログラムの見通しが悪くなりますので、
省略はしないようにしましょう。
◎使用例
MySubという名前のSubプロシージャを呼び出し、
整数型の変数と式を渡すには、次のように入力します。
Call MySub (intMyIntefer. curPrice * intQty)
次の構文を使用することもできます。
MySub intMyInteger. curPrice * intQty
|
| GoTo |
| ・Callと違い、同じプロシージャ内への分岐構文です。
また、呼び出し側へも戻りません。
・通常は使用しない方が良いですが、エラー分岐構文として使用します。
◎使用例
SkipOverというラベルが付いたステートメント行へジャンプするには、
次のように入力します。
GoTo SkipOver
|