Guida di LibreOffice 25.2
Definisce uno o più blocchi di istruzioni da eseguire se una determinata condizione o espressione risulta True (vera).
If condition Then
statements
[{ElseIf} condition Then
statements]
[Else
statements]
{EndIf|End If}
Invece di End If è possibile scrivere EndIf.
Quando i blocchi sono costituiti da una singola istruzione, le istruzioni If possono essere abbreviate su un'unica riga.
If condition Then statement [Else statement]
L'istruzione If...Then esegue dei blocchi di programma a seconda delle condizioni impostate. Quando LibreOffice Basic incontra un'istruzione If, la condizione viene valutata. Se questa è True (vera), vengono eseguite tutte le istruzioni successive fino alla prossima istruzione Else o ElseIf. Se la condizione risulta False (falsa) ed è seguita da un'istruzione ElseIf, LibreOffice Basic verifica l'espressione successiva e, se la condizione è True, esegue le istruzioni che la seguono. Se invece è False, il programma continua con la successiva istruzione ElseIf o Else. Le istruzioni successive a Else vengono eseguite solo se nessuna delle precedenti condizioni è risutata essere True (vera). Dopo aver valutato tutte le condizioni e aver eseguito le istruzioni corrispondenti, il programma continua con l'istruzione che segue EndIf.
Le istruzioni If...Then possono essere annidate.
Le istruzioni Else e ElseIf sono opzionali.
Potete usare le istruzioni GoTo e GoSub per uscire da un blocco If...Then, ma non per entrare in una struttura If...Then.
L'esempio seguente permette di inserire la data di scadenza di un prodotto e determina se tale data sia trascorsa.
Sub ExampleIfThenDate
Dim sInput As String
Dim dInput As Date
On Error Goto inputError
sInput = InputBox("Inserisci la data di scadenza (AAAA-MM-GG)")
dInput = DateValue(sInput)
If dInput < Date() Then
MsgBox "La data di scadenza è già trascorsa"
ElseIf dInput > Date() Then
MsgBox "La data di scadenza non è ancora trascorsa"
Else
MsgBox "La data di scadenza è oggi"
End If
inputError:
If dInput = 0 Then MsgBox "Input non valido"
End Sub