I noen tilfeller vil du kanskje at brukeren skal velge et Excel VBA-område mens en dialogboks vises. Et eksempel på denne typen Excel VBA-områdevalg forekommer i dialogboksen Lag tabell, som vises når du velger Hjem → Sett inn → Tabeller → Tabell. Dialogboksen Lag tabell har en områdevelgerkontroll som inneholder Excels gjetning angående området som skal konverteres - men du kan bruke denne kontrollen til å endre området ved å velge celler i regnearket.
For å tillate et Excel VBA-områdevalg i dialogboksen, legg til en RefEdit-kontroll. Følgende eksempel viser en dialogboks med gjeldende regions områdeadresse vist i en RefEdit-kontroll. Den gjeldende regionen er blokken med ikke-tomme celler som inneholder den aktive cellen. Brukeren kan godta eller endre dette området. Når brukeren klikker OK, gjør prosedyren området fet skrift.
Denne dialogboksen lar brukeren velge et område.
Dette Excel VBA-eksemplet forutsetter følgende:
- Du har et brukerskjema som heter UserForm1.
- UserForm inneholder en CommandButton-kontroll kalt OKButton.
- UserForm inneholder en CommandButton-kontroll kalt CancelButton.
- UserForm inneholder en RefEdit-kontroll kalt RefEdit1.
Koden lagres i en VBA-modul og vises her. Denne koden gjør to ting: initialiserer dialogboksen ved å tilordne gjeldende regions adresse til RefEdit-kontrollen og viser brukerskjemaet.
Sub BoldCells()
' Avslutt hvis regnearket ikke er aktivt
Hvis TypeName(ActiveSheet) <> "Worksheet" Avslutt Sub
' Velg gjeldende region
ActiveCell.CurrentRegion.Select
' Initialiser RefEdit-kontrollen
UserForm1.RefEdit1.Text = Utvalg.adresse
' Vis dialog
UserForm1.Show
End Sub
Følgende prosedyre utføres når OK-knappen klikkes. Denne prosedyren gjør en enkel feilkontroll for å sikre at området spesifisert i RefEdit-kontrollen er gyldig.
Privat under OKButton_Click()
Ved feil GoTo BadRange
Range(RefEdit1.Text).Font.Fet = True
Last ned UserForm1
Avslutt Sub
BadRange:
MsgBox "Det angitte området er ikke gyldig."
End Sub
Hvis det oppstår en feil i Excel VBA (mest sannsynlig en ugyldig områdespesifikasjon i RefEdit-kontrollen), hopper koden til BadRange-etiketten, og en meldingsboks vises. Dialogboksen forblir åpen slik at brukeren kan velge et annet område.
Hvis å få et brukervalgt område er den eneste funksjonen som utføres av UserForm, kan du forenkle ting ved å bruke Application InputBox-metoden.