Joissakin tapauksissa saatat haluta käyttäjän valitsevan Excelin VBA-alueen, kun valintaikkuna on näkyvissä. Esimerkki tämäntyyppisestä Excel VBA -alueen valinnasta on Luo taulukko -valintaikkunassa, joka tulee näkyviin, kun valitset Aloitus → Lisää → Taulukot → Taulukko. Luo taulukko -valintaikkunassa on alueen valitsin, joka sisältää Excelin arvauksen muunnettavasta alueesta, mutta voit käyttää tätä ohjausobjektia muuttamaan aluetta valitsemalla solut laskentataulukosta.
Jos haluat sallia Excel VBA -alueen valinnan valintaikkunassasi, lisää RefEdit-ohjausobjekti. Seuraava esimerkki näyttää valintaikkunan, jossa nykyisen alueen osoite näkyy RefEdit-säätimessä. Nykyinen alue on tyhjien solujen lohko, joka sisältää aktiivisen solun. Käyttäjä voi hyväksyä tai muuttaa tämän alueen. Kun käyttäjä napsauttaa OK, toimenpide lihavoittaa alueen.
Tämän valintaikkunan avulla käyttäjä voi valita alueen.
Tässä Excel VBA -esimerkissä oletetaan seuraavaa:
- Sinulla on UserForm nimeltä UserForm1.
- UserForm sisältää CommandButton-ohjaimen nimeltä OKButton.
- UserForm sisältää CommandButton-ohjaimen nimeltä CancelButton.
- UserForm sisältää RefEdit-komponentin nimeltä RefEdit1.
Koodi on tallennettu VBA-moduuliin ja näytetään tässä. Tämä koodi tekee kaksi asiaa: alustaa valintaikkunan määrittämällä nykyisen alueen osoitteen RefEdit-säätimelle ja näyttää UserFormin.
SubboldCells()
' Poistu, jos laskentataulukko ei ole aktiivinen
Jos TyypinNimi(ActiveSheet) <> "Työtaulukko" Poistu Sub
' Valitse nykyinen alue
ActiveCell.CurrentRegion.Select
' Alusta RefEdit-ohjaus
UserForm1.RefEdit1.Text = Selection.Address
' Näytä valintaikkuna
UserForm1.Show
Lopeta ala
Seuraava toimenpide suoritetaan, kun OK-painiketta napsautetaan. Tämä toimenpide suorittaa yksinkertaisen virheentarkistuksen varmistaakseen, että RefEdit-ohjauksessa määritetty alue on kelvollinen.
Yksityinen Sub OKButton_Click()
On Error GoTo BadRange
Alue(RefEdit1.Text).Font.Bold = tosi
Poista UserForm1
Poistu Subista
BadRange:
MsgBox "Määritetty alue ei ole kelvollinen."
Lopeta ala
Jos Excel VBA:ssa tapahtuu virhe (todennäköisimmin virheellinen aluemääritys RefEdit-ohjauksessa), koodi hyppää BadRange-tunnisteeseen ja viestiruutu tulee näkyviin. Valintaikkuna pysyy auki, jotta käyttäjä voi valita toisen alueen.
Jos käyttäjän valitseman alueen saaminen on ainoa toiminto, jonka UserForm suorittaa, voit yksinkertaistaa asioita käyttämällä Application InputBox -menetelmää.