Simpel brugerdialog
Der er to interessante metoder til at skabe lidt dialog med brugeren.
MsgBox
Den første hedder MsgBox og bruges, som navnet antyder, til at vise en beskedboks på skærmen. Syntaksen for MsgBox er (hentet fra hjælpe funktionen):
MsgBox prompt[, buttons] [, title] [, helpfile, context]
Dette betyder at man skal angive en prompt, men de ting, der står i kantede parenteser behøver man ikke angive. Det betyder at vi f.eks. kan skrive
MsgBox "Velkommen til min makro"
Og det kommer så til at se sådan her ud:
Og skriver man
MsgBox "Velkommen til min makro", vbYesNo, "Min makro"
Kommer det til at se sådan her ud:
Bemærk, at når man kommer til MsgBox "Velkommen til min makro", dukker der en liste op over mulige knapper man kan sætte på sin MsgBox. vbYesNo dækker i virkeligheden over tallet 4! - det er én af mange konstanter, der er indbygget i VBA.
Returværdi fra en MsgBox
Det giver jo ikke meget mening at sætte knapper på sådan en MsgBox, hvis vi ikke kan finde ud af, hvilken af de to knapper brugeren har trykket på. Vil man have resultater ud af en MsgBox ser det sådan her ud:
svar = MsgBox("Velkommen til min makro", vbYesNo, "Min makro")
Range("A1").Value = svar
Bemærk, at der er kommet parenteser på! - det er sådan vi signalerer, at vi gerne vil have et svar retur fra metoden. svar er "bare" en variabel, der bruges til at gemme værdien der kommer retur fra MsgBoxen - man bestemmer selv hvad sådanne variable skal hedde.
Knapper på msgbox'en
I eksemplet ovenfor kan du se, at vi kan sætte ja/nej knapper på msgbox'en, men vi har flere muligheder!
Prøv at skrive.
MsgBox "Velkommen til min makro", vbYesNo + vbExclamation + vbDefaultButton2, "Min makro"
Bemærk, at der er også er ændret på, hvilken knap, der er default. Du har følgende knapper at vælge imellem:
Konstant |
Betydning |
vbOKOnly |
Viser OK alene |
vbOKCancel |
Viser OK og Cancel. |
vbAbortRetryIgnore |
Viser Abort, Retry, og Ignore |
vbYesNoCancel |
Viser Yes, No, og Cancel |
vbYesNo |
Viser Yes og No |
vbRetryCancel |
Viser Retry og Cancel |
vbCritical |
Viser Critical Message ikon. |
vbQuestion |
Viser Warning Query ikon. |
vbExclamation |
Viser Warning Message ikon. |
vbInformation |
Viser Information Message ikon. |
vbDefaultButton1 |
Første knap er default. |
vbDefaultButton2 |
Anden knap er default. |
vbDefaultButton3 |
Tredje knap er default. |
vbDefaultButton4 |
Fjerde knap er default. |
vbApplicationModal |
Brugeren skal klikke på knappen før der kan arbejdes videre i Excel. |
vbSystemModal |
Brugeren skal klikke på knappen før der kan arbejdes videre på computeren |
vbMsgBoxHelpButton |
Tilføjer en hjælp-knap |
VbMsgBoxSetForeground |
Sætter msgbox'en til at være det forreste vindue |
vbMsgBoxRight |
Teksten er højrestillet |
vbMsgBoxRtlReading |
Angiver at teksten skal skrives fra højre mod venstre |
InputBox
En InputBox giver brugeren mulighed for at skrive lidt til os. Syntaksen er:
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Og skriver man
svar = InputBox("Hvad hedder du? ", "Velkommen til")
Range("A1").Value = svar
Ser det sådan her ud:
Bemærk, at der her altid skal være parenteser - det er jo ikke specielt smart at lave en inputbox, hvis man ikke bruger resultatet til noget.
Avanceret brugerdialog
Vil man gerne lave en mere avanceret brugerdialog skal man bruge en Userform - det skal vi lære om senere.