Vi har flere forskellige metoder:
Print-funktionen printer enkeltlinjer som særskilte dialoger. Hver af følgende vil derfor resultere i to små dialoger:
Print "expression1" & chr(13) & "expression2" 'chr(13) svarer til "Enter" (Carriage return)
Print "expression1" & chr(10) & "expression2" 'chr(10) svarer til "Skift" + "Enter" (Line feed)
Print bruges ofte til at vise resultatet af en variabel:
Print date(now)
Print kan håndtere alle dataformater, så det er ligemeget om du printer en dato, en tekst eller et tal. Dog er det ikke muligt at kombinere variable med forskellige datatyper. Derfor skal du selv konvertere f.eks. en dato, før du kan kombinere den med en tekst.
Selv bruger jeg kun Print til debugging, hvor jeg indsætter en masse print-sætnigner i koden, som udskriver variabel-værdier.
Der er flere parametre for Print-sætnignen som jeg ikke kommer mere ind på. Du kan selv kigge i hjælpen for mere information.
MsgBox
MsgBox er mere egnet for egentlig bruger-dialog. Dialogen består i at du kan lytte til hvad brugeren svarer tilbage (hvilekt vlag brugeren gjorde).Syntaks:
MsgBox (Text As String [,Type As Integer [,DialogTitle As String]])
Resultatet af brugerens valg kan du få fat i ved at tilknytte MsgBox til en variabel:
Result= MsgBox ("Tekst", type "Overskrift")
Teksten kan, til forskel fra Print, godt indeholde linjeskift, hvilket er praktisk, hvis du f.eks. skal vise en liste over værdier. Men det mest interessante er parameteren 'Type', som giver dig kontrol over, hvordan dialogen ser ud.
Ikoner og knapper som brugeren kan trykke på kontrolleres sådan:
0 : Vis kun knappen OK.
1 : Vis knapperne OK og Annuller.
2 : Vis knapperne Annuller, Prøv igen og Ignorer.
3 : Vis knapperne Ja, Nej og Annuller.
4 : Vis knapperne Ja og Nej.
5 : Vis knapperne Prøv igen og Annuller.
16 : Føj stop-ikonet til dialogen.
32 : Føj spørgsmåls-ikonet til dialogen.
48 : Føj udråbs-ikonet til dialogen.
64 : Føj informations-ikonet til dialogen.
128 : Første knap i dialogen som standardknap.
256 : Anden knap i dialogen som standardknap.
512 : Tredje knap i dialogen som standardknap.
Hvis du ønsker at kombinere valgmulighederne, skal du lægge værdierne sammen, f.eks. 3+64=67 svarer til "Vis knapperne Ja, Nej og Annuller" og "Føj informations-ikonet til dialogen".
Returværdier (returneres til dig i variablen):
1 : OK
2 : Annuller
3 : Afbryd
4 : Prøv igen
5 : Ignorer
6 : Ja
7 : Nej
Om du angiver parameteren Type som et tal eller et regnestykker er det samme:
Result= MsgBox ("Tekst", 67+512, "Overskrift")
Result= MsgBox ("Tekst", 579, "Overskrift")
Resultatet vil dog altiv være 6 (Ja), 7 (Nej) eller 2 (Annuller).
MsgBox returnerer altid resultater fra en afgrænset mængde af muligheder, og Select...Case er dermed en oplagt måde at håndtere resultatet på. Eksempel:
REM ***** BASIC *****
Sub Main
Resultat = MsgBox("Tryk på en tast", 67, "Tastetryk")
Select Case Resultat
Case 6
Print "Du trykkede på Ja"
Case 7
Print "Du trykkede på Nej"
Case 2
Print "Du trykkede på Annuller"
end Select
End Sub
InputBox
Med InputBox kan du bede brugeren om at indtaste en tekst, som du så modtager retur. Syntaksen er:InputBox (Msg As String[, Title As String[, Default As String[, x_pos As Integer, y_pos As Integer]]]])
Returværdien er altid en tekststreng, også selvom brugeren skriver et tal. Hvis du beder brugeren om at indtaste et tal, skal du selv konvertere tekststrengen til et tal.
Et eksempel:
sText = InputBox ("Indtast en sætning:","Kære bruger","Jeg gætter på")
Print sText
Læg mærke til at resultatet kan aflæses af variablen sText.
Endnu et eksempel:
Sub InputBoxTest
Resultat = InputBox("Indtast et tal","Tal", 8)
ResultatTal = Val(Resultat)
Print Resultat + 12 '812
Print ResultatTal + 12 '20
End Sub
Jeg bruger InputBox i eksemplet i artiklen "Regneark i Calc (Årskalender)", som du kan læse her: http://libreofficedk.blogspot.dk/2016/10/regneark-i-calc-arskalender.html
this_year = InputBox ("Indtast årstal mellem 1583 og 3000", "Vælg årstal", year(date))
If (1583 > val(this_year) OR val(this_year) > 3000) then
MsgBox("Årstallet skal være mellem 1583 og 3000", 48, "Fejl")
Stop
End If
I eksemplet bruger jeg year(date) som standardværdi (indeværende år).