If...Then...Else ステートメントを使用して 2 つのうちのいずれかを選択する

ブロックステートメントの If...Then...Else は、式の値に基づいてどちらか一方のグループのステートメントを実行するよう指定します。If...Then...Else ステートメントは 1 行に記述する必要があるので、それぞれのステートメントグループは通常は 1 つの短いステートメントです。

構文は次のとおりです。

If condition Then statements Else statements

この形式では、Then 節が実行されるか (condition が TRUE の場合)、Else 節が実行されます (condition が FALSE の場合)。 以下に例を示します。

If doCount% >= 1000 Then flagForm% = -1 Else flagForm% = 0

If condition Then statements

この形式では、condition が TRUE の場合に Then 節が実行されますが、それ以外の場合は何も実行されません。以下に例を示します。

If doCount% >= 1000 Then flagForm% = -1

どちらの形式も、次の行のステートメントから実行が継続されます。新規行が If...Then...Else ステートメントの終了として認識されるので、If...Then...Else ステートメントに続けて同一行に他のステートメントを記述することはできません。

注: 改行は、すべてのプラットフォームで chr(10) または chr(13) を意味するわけではありません。改行は、行の終端を示すために使用される文字または文字列です。この文字は、Chr(10) や Chr(13) の場合もあれば、それ以外の場合もあります。これは、改行の実際の値がプラットフォームに依存するためです。

次の例は、Exit Do という単一ステートメントで構成される Then 節を示しています。Else 節はありません。スクリプトは単純な Do ループを 1000 回実行してその経過時間を計算します。時間はクライアントによって異なります。

Dim doCount As Integer, startTime As Single
startTime! = Timer()
doCount% = 0
Do
   ' Increment doCount% through 1000 iterations of the Do loop.
   doCount% = doCount% + 1
   If doCount% > 1000 Then Exit Do
Loop
' Come here upon exit from the Do loop.
Print Timer() - startTime! "seconds for 1000 iterations"
' Output:
' .109375 seconds for 1000 iterations

Do と Exit ステートメントの詳細については、この章のそれぞれのステートメントの項を参照してください。

Then 節に複数のステートメントを含めるには、ステートメントをステートメント区切り文字のコロン (:) で区切ります。

Do
   If doCount% >= 1000 Then Print "Done." : Exit Do 
Loop

この例の Do ループ内の 2 つのステートメントを、次のように 1 つの If...Then...Else ステートメントに書き換えることもできます。

Do
   If doCount% >= 1000 Then Exit Do Else doCount% = _
       doCount% + 1
Loop

これは、前の例のループよりもコンパクトですが、前の例より実行に時間がかかります。

If...Then...Else ステートメントの条件は、前の例のように簡単にも、複雑にもできます。

次の例は、より複雑な条件を示しています。

If Abs(tempProx! - approx!) >= .00001 And iters% < 40 _
   Then Exit Do

ステートメントは、If condition Then 形式または If condition Then statements Else 形式の後ろに同一行にソースコードが続く場合、If...Then...Else ステートメントとして識別されます。この言語が同一行にない限り、ステートメントは If...Then...ElseIf ステートメントとして解釈されます。

最終行を除く各行の最後に行継続文字のアンダースコア (_) を付けることにより、ステートメントを複数行に拡張できます。ただし、ステートメントが 2 行に渡るほど長くなれば、If...Then...ElseIf ステートメントとして書き換えたほうが読みやすくなります。