Module
Contents
Index 🔎︎

# If...Then...Else Statement

特定の判定条件が True で合った場合にのみ、指定したステートメントブロック (複数指定可能) を実行させます。

## 構文:

    If condition=true Then Statement block [ElseIf condition=true Then] Statement block [Else] Statement block EndIf

Else Ifの代わりにElsIf、End Ifの代わりにEndIfを使うことができます。

## パラメーター:

If... Then ステートメントが指定したプログラムブロックを実行するかは、与えられた判定条件によります。 LibreOffice Basic の実行行が If ステートメントに到達すると、判定条件のチェックが行われます。 判定結果が True であれば、次の Else ないし ElseIf ステートメントまでに記述されているすべてのステートメントブロックが実行されます。 判定結果が False であり ElseIf ステートメントが指定されていれば、LibreOffice Basic は次の判定条件をチェックし、その判定結果が True であれば、該当するステートメントブロックが実行されます。 判定結果が False であれば、直後の ElseIf ないし Else に従って処理が続行されます。 Else に続くステートメントブロックは、それ以前にある判定条件がすべて満たされなかった場合にのみ実行されます。 こうしたすべての判定条件が評価され、該当するステートメントブロックの実行が終了すると、EndIf 以降に記述されたステートメントが実行されます。

If...Then ステートメントは、複数のものをネスト (入れ子化) することができます。

Else および ElseIf は省略可能です。

GoTo や GoSub を使って、If...Then の中から外へジャンプすることは可能ですが、If...Then の中にジャンプすることはできません。

下記の例では、製品の有効期限をユーザーに入力させて、期限が切れていないかを判定しています。

## 例:

    Sub ExampleIfThenDate
    Dim sDate As String
    Dim sToday As String
        sDate = InputBox("Enter the expiration date (MM.DD.YYYY)")
        sDate = Right$(sDate, 4) + Mid$(sDate, 4, 2) + Left$(sDate, 2)
        sToday = Date$
        sToday = Right$(sToday, 4)+ Mid$(sToday, 4, 2) + Left$(sToday, 2)
        If sDate < sToday Then
            MsgBox "The expiration date has passed"
        ElseIf sDate > sToday Then
            MsgBox "The expiration date has not yet passed"
        Else
            MsgBox "The expiration date is today"
        End If
    End Sub