Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Introduction to UserForms | Käyttäjän vuorovaikutus
Excel VBA Liiketoiminnan Automaatioon

Introduction to UserForms

Pyyhkäise näyttääksesi valikon

Note
Huomio

UserForm-lomakkeiden toiminnallisuus on rajoitettua tai puuttuu kokonaan Excel for Macissa — VBA IDE Macilla ei tue UserForm-lomakkeiden suunnittelua täysimääräisesti monissa versioissa, mikä voi aiheuttaa juuri tällaisia selittämättömiä ongelmia.

MsgBox ja InputBox soveltuvat yksinkertaisiin kyllä/ei-kysymyksiin ja yhden rivin vastauksiin, mutta asiakkaan lisääminen vaatii usein useita kenttiä kerralla — esimerkiksi yrityksen nimi, yhteyshenkilö, kaupunki, tila. Tätä varten käytetään UserForm-lomaketta: pieni mukautettu ikkuna, jossa on omat otsikot, tekstikentät, pudotusvalikot ja painikkeet, jotka rakennetaan VBE:ssä ja joita ohjataan kokonaan omalla koodilla.

Lomakkeen luominen

VBE:ssä napsauta hiiren oikealla projektiasi Project Explorerissa ja valitse Insert → UserForm. Näytölle ilmestyy tyhjä suunnittelupinta sekä kelluva työkalupakki, josta voit vetää ohjausobjekteja lomakkeelle.

Kuva 5.3

Tunnisteet, tekstikentät, yhdistelmäruudut ja painikkeet

Jokainen ohjausobjekti, jonka vedät lomakkeelle, saa oletusnimen kuten TextBox1 tai CommandButton1 — toimiva, mutta merkityksetön, kun lomakkeella on kuusi tai seitsemän ohjausobjektia. Tärkein tapa tässä osiossa näkyy Ominaisuudet-ikkunassa: nimeä jokainen ohjausobjekti välittömästi lisäämisen jälkeen lyhyellä etuliitteellä ja kuvaavalla nimellä (esim. txt tekstikentälle (TextBox), cbo yhdistelmäruudulle (ComboBox), cmd painikkeelle (CommandButton), opt valintapainikkeelle (OptionButton), chk valintaruudulle (CheckBox), lst luetteloruudulle (ListBox)). txtCompanyName on koodissa yksiselitteinen vielä kolmen viikon päästäkin; TextBox1 ei ole.

Tunnisteet ovat tavallisia, ei-interaktiivisia tekstikuvauksia ("Yrityksen nimi:") — käyttäjä näkee ne, mutta ei voi kirjoittaa niihin tai klikata niitä. Tekstikenttiin kirjoitetaan vapaamuotoista tekstiä. Yhdistelmäruudut tarjoavat avattavan valikon vaihtoehdoista, mikä on juuri cboCity- ja cboStatus-kenttien tarkoitus — rajoittaa Kaupunki ja Tila tunnettuun listaan sen sijaan, että käyttäjä voisi kirjoittaa "chicago", "Chicago,IL" ja "CHI" eri muodoissa eri tietueisiin.

Lomakkeen luontiprosessi

Koodin kirjoittaminen lomakkeen taakse

Kaksoisnapsauta mitä tahansa ohjausobjektia suunnittelunäkymässä siirtyäksesi suoraan sen koodiin — VBA luo automaattisesti tapahtumakäsittelijän nimellä ControlName_EventName, ja kirjoittamalla koodia sen sisään varmistat, että koodi suoritetaan aina, kun kyseinen tapahtuma tapahtuu kyseiselle ohjausobjektille. Painikkeen oletustapahtuma on Click:

Private Sub UserForm_Initialize()
    ' runs once, automatically, when the form is first shown
    cboCity.AddItem "Chicago"
    cboCity.AddItem "Boston"
    cboCity.AddItem "Austin"
    cboCity.AddItem "Seattle"
    cboCity.AddItem "Denver"
 
    cboStatus.AddItem "Active"
    cboStatus.AddItem "Inactive"
    cboStatus.AddItem "Prospect"
End Sub
 
Private Sub cmdCancel_Click()
    Unload Me
End Sub

UserForm_Initialize on erityinen tapahtumakäsittelijä, joka käynnistyy automaattisesti heti, kun lomake ladataan — ennen kuin käyttäjä näkee mitään — joten se on oikea paikka täyttää ComboBoxit .AddItem-komennolla sen sijaan, että syöttäisit vaihtoehdot Properties-ikkunaan käsin, erityisesti silloin kun vaihtoehdot voivat muuttua tai tulla laskentataulukosta. Unload Me komennossa cmdCancel_Click sulkee lomakkeen kokonaan; Me viittaa aina siihen lomakkeeseen, jonka sisällä koodi parhaillaan suoritetaan, joten tämä rivi toimii sellaisenaan riippumatta siitä, mihin nimeen lomake myöhemmin muutetaan.

Esimerkkitapaus: Uuden asiakkaan tallentaminen

Tämä on Save-painikkeen taustalla oleva proseduuri — se, joka todella kirjoittaa uuden rivin tblCustomers-tauluun:

Private Sub cmdSave_Click()
    Dim tbl As ListObject
    Dim newRow As ListRow
 
    Set tbl = ThisWorkbook.Worksheets("Customers").ListObjects("tblCustomers")
    Set newRow = tbl.ListRows.Add
 
    newRow.Range(1, 1).Value = "C" & Format(tbl.ListRows.Count + 1, "000")
    newRow.Range(1, 2).Value = txtCompanyName.Value
    newRow.Range(1, 3).Value = txtContact.Value
    newRow.Range(1, 4).Value = txtEmail.Value
    newRow.Range(1, 5).Value = cboCity.Value
    newRow.Range(1, 6).Value = cboStatus.Value
 
    MsgBox txtCompanyName.Value & " was added successfully."
    Unload Me
End Sub
Rivikohtainen tarkastelu
expand arrow
  • Komento tbl = ThisWorkbook.Worksheets("Customers").ListObjects("tblCustomers") ulottuu lomakkeelta takaisin työkirjaan — UserForm on vain toinen koodin osa, joten kaikki ListObjecteihin liittyvä pätee siihen sellaisenaan;
  • tbl.ListRows.Add lisää aidosti uuden rivin taulukon sisälle sen rajojen mukaisesti sen sijaan, että kirjoitettaisiin viimeisen käytetyn solun ohi käsin;
  • txtCompanyName.Value, cboCity.Value ja muut lukevat sen, mitä käyttäjä on sillä hetkellä kirjoittanut tai valinnut kyseisessä ohjausobjektissa — .Value on yleinen lähes kaikille ohjausobjekteille, minkä vuoksi sama toimintamalli toimii sekä TextBoxeille että ComboBoxeille;
  • Luotu asiakasnumero on yksinkertaistettu esimerkkiä varten — todellinen tunnisteen luonti vaatisi aukkojen ja uudelleenkäytettyjen tunnisteiden tarkistamista, mitä tämä rivi ei tee;
  • Unload Me lopussa sulkee lomakkeen vasta, kun rivi on kirjoitettu — jos lomake suljettaisiin aiemmin, txtCompanyName.Value ja muiden ohjausobjektien arvot eivät olisi enää luettavissa, koska ohjausobjektit lakkaavat olemasta lomakkeen sulkeuduttua.
Note
Huomio

Lomakkeen "Yrityksen nimi" -otsikko on vain käyttäjäystävällisempi nimi taulukon Customer-sarakkeelle — koodi kirjoittaa txtCompanyName.Value kyseiseen sarakkeeseen otsikosta riippumatta, koska VBA:ssa vain TextBoxin nimi on merkityksellinen, ei sen näytöllä näkyvä otsikko.

Note
Huomio

Customer ID ei ole lomakkeella, koska se luodaan automaattisesti koodilla ("C0" & (tbl.ListRows.Count + 100)), eikä käyttäjä syötä sitä itse — tämä vastaa todellisten järjestelmien toimintaa, joissa uudet tunnisteet numeroidaan automaattisesti sen sijaan, että käyttäjä valitsisi yksilöllisen tunnisteen.

Tehtävä

  1. Lisää uusi UserForm, nimeä se frmAddCustomer, ja lisää kolme TextBoxia (txtCompanyName, txtContact, txtEmail) sekä kaksi ComboBoxia (cboCity, cboStatus), jokaiselle oma Label.
  2. Lisää kaksi CommandButtonia, cmdSave ja cmdCancel, ja kirjoita UserForm_Initialize- ja cmdCancel_Click-proseduurit täsmälleen ohjeen mukaan.
  3. Kirjoita cmdSave_Click annetun esimerkin mukaisesti ja lisää tilapäinen painike muualle työkirjaan koodilla frmAddCustomer.Show testataksesi lomakkeen avaamista.
  4. Täytä lomake kuvitteelliselle kuudennelle asiakkaalle ja napsauta Tallenna — varmista, että tblCustomers-tauluun ilmestyy uusi rivi syöttämilläsi arvoilla.
Vihje
expand arrow

1. Lomakkeen rakentaminen

  • Lisää → UserForm VBE:ssä, nimeä se sitten uudelleen Ominaisuudet-ikkunan (Name)-kentässä nimellä frmAddCustomer — älä Caption-kentässä, joka muuttaa vain otsikkopalkin tekstin.
  • Vedä yksi Label + yksi TextBox -pari kullekin: Yrityksen nimi, Yhteyshenkilö ja Sähköposti; yksi Label + yksi ComboBox -pari Kaupunki ja Tila -kentille.
  • Nimeä jokainen ohjausobjekti heti lisäämisen jälkeen — tämä on tapa, jota kappale korosti. Labeleille ei tarvitse antaa koodiin sopivia nimiä, koska niitä ei viitata koodissa, mutta jokainen TextBox/ComboBox/Painike tarvitsee.

2. UserForm_Initialize ja cmdCancel_Click

  • Kaksoisnapsauta lomakkeen tyhjää taustaa (ei ohjausobjektia) päästäksesi UserForm_Initialize-menetelmään — kaksoisnapsauttamalla cmdCancel pääset suoraan cmdCancel_Click-menetelmään.
  • Molemmat proseduurit annettiin sinulle täsmälleen kappaleessa — kirjoita ne muuttamatta.

3. Testaus väliaikaisella painikkeella

  • Tämän painikkeen ei tarvitse olla lomakkeella — lisää se mille tahansa laskentataulukolle kohdasta Kehittäjä → Lisää → Painike (Lomakeohjaus), tai suorita yksirivinen Sub VBE:stä ilman laskentataulukon painiketta.
  • frmAddCustomer.Show on koko koodi lomakkeen näyttämiseen.

4. Koko tallennuksen testaus

  • Täytä kaikki kentät ja valitse arvot molemmista pudotusvalikoista ennen Tallenna-painikkeen painamista — tyhjä ComboBox-valinta kirjoittaa tyhjän solun.
  • Tarkista tblCustomers jälkeenpäin, että uusi rivi, jossa on C00x-tyylinen ID, on lisätty.
Ratkaisu
expand arrow
Private Sub UserForm_Initialize()
    ' runs once, automatically, when the form is first shown
    cboCity.AddItem "Chicago"
    cboCity.AddItem "Boston"
    cboCity.AddItem "Austin"
    cboCity.AddItem "Seattle"
    cboCity.AddItem "Denver"

    cboStatus.AddItem "Active"
    cboStatus.AddItem "Inactive"
    cboStatus.AddItem "Prospect"
End Sub

Private Sub cmdCancel_Click()
    Unload Me
End Sub

Private Sub cmdSave_Click()
    Dim tbl As ListObject
    Dim newRow As ListRow

    Set tbl = ThisWorkbook.Worksheets("Customers").ListObjects("tblCustomers")
    Set newRow = tbl.ListRows.Add

    newRow.Range(1, 1).Value = "C0" & (tbl.ListRows.Count + 100)
    newRow.Range(1, 2).Value = txtCompanyName.Value
    newRow.Range(1, 3).Value = txtContact.Value
    newRow.Range(1, 4).Value = txtEmail.Value
    newRow.Range(1, 5).Value = cboCity.Value
    newRow.Range(1, 6).Value = cboStatus.Value

    MsgBox txtCompanyName.Value & " was added successfully."
    Unload Me
End Sub

Testataksesi tämän, suorita tämä mistä tahansa tavallisesta moduulista (ei UserFormin omasta koodista):

Sub ShowAddCustomerForm()
    frmAddCustomer.Show
End Sub

Paina F5, kun kohdistin on ShowAddCustomerForm-aliohjelman sisällä — lomakkeen pitäisi avautua, ja sen täyttäminen ja Tallenna-painikkeen painaminen lisää uuden rivin tblCustomers-taulukkoon.

Lomakkeen testaaminen
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Introduction to UserForms

Note
Huomio

UserForm-lomakkeiden toiminnallisuus on rajoitettua tai puuttuu kokonaan Excel for Macissa — VBA IDE Macilla ei tue UserForm-lomakkeiden suunnittelua täysimääräisesti monissa versioissa, mikä voi aiheuttaa juuri tällaisia selittämättömiä ongelmia.

MsgBox ja InputBox soveltuvat yksinkertaisiin kyllä/ei-kysymyksiin ja yhden rivin vastauksiin, mutta asiakkaan lisääminen vaatii usein useita kenttiä kerralla — esimerkiksi yrityksen nimi, yhteyshenkilö, kaupunki, tila. Tätä varten käytetään UserForm-lomaketta: pieni mukautettu ikkuna, jossa on omat otsikot, tekstikentät, pudotusvalikot ja painikkeet, jotka rakennetaan VBE:ssä ja joita ohjataan kokonaan omalla koodilla.

Lomakkeen luominen

VBE:ssä napsauta hiiren oikealla projektiasi Project Explorerissa ja valitse Insert → UserForm. Näytölle ilmestyy tyhjä suunnittelupinta sekä kelluva työkalupakki, josta voit vetää ohjausobjekteja lomakkeelle.

Kuva 5.3

Tunnisteet, tekstikentät, yhdistelmäruudut ja painikkeet

Jokainen ohjausobjekti, jonka vedät lomakkeelle, saa oletusnimen kuten TextBox1 tai CommandButton1 — toimiva, mutta merkityksetön, kun lomakkeella on kuusi tai seitsemän ohjausobjektia. Tärkein tapa tässä osiossa näkyy Ominaisuudet-ikkunassa: nimeä jokainen ohjausobjekti välittömästi lisäämisen jälkeen lyhyellä etuliitteellä ja kuvaavalla nimellä (esim. txt tekstikentälle (TextBox), cbo yhdistelmäruudulle (ComboBox), cmd painikkeelle (CommandButton), opt valintapainikkeelle (OptionButton), chk valintaruudulle (CheckBox), lst luetteloruudulle (ListBox)). txtCompanyName on koodissa yksiselitteinen vielä kolmen viikon päästäkin; TextBox1 ei ole.

Tunnisteet ovat tavallisia, ei-interaktiivisia tekstikuvauksia ("Yrityksen nimi:") — käyttäjä näkee ne, mutta ei voi kirjoittaa niihin tai klikata niitä. Tekstikenttiin kirjoitetaan vapaamuotoista tekstiä. Yhdistelmäruudut tarjoavat avattavan valikon vaihtoehdoista, mikä on juuri cboCity- ja cboStatus-kenttien tarkoitus — rajoittaa Kaupunki ja Tila tunnettuun listaan sen sijaan, että käyttäjä voisi kirjoittaa "chicago", "Chicago,IL" ja "CHI" eri muodoissa eri tietueisiin.

Lomakkeen luontiprosessi

Koodin kirjoittaminen lomakkeen taakse

Kaksoisnapsauta mitä tahansa ohjausobjektia suunnittelunäkymässä siirtyäksesi suoraan sen koodiin — VBA luo automaattisesti tapahtumakäsittelijän nimellä ControlName_EventName, ja kirjoittamalla koodia sen sisään varmistat, että koodi suoritetaan aina, kun kyseinen tapahtuma tapahtuu kyseiselle ohjausobjektille. Painikkeen oletustapahtuma on Click:

Private Sub UserForm_Initialize()
    ' runs once, automatically, when the form is first shown
    cboCity.AddItem "Chicago"
    cboCity.AddItem "Boston"
    cboCity.AddItem "Austin"
    cboCity.AddItem "Seattle"
    cboCity.AddItem "Denver"
 
    cboStatus.AddItem "Active"
    cboStatus.AddItem "Inactive"
    cboStatus.AddItem "Prospect"
End Sub
 
Private Sub cmdCancel_Click()
    Unload Me
End Sub

UserForm_Initialize on erityinen tapahtumakäsittelijä, joka käynnistyy automaattisesti heti, kun lomake ladataan — ennen kuin käyttäjä näkee mitään — joten se on oikea paikka täyttää ComboBoxit .AddItem-komennolla sen sijaan, että syöttäisit vaihtoehdot Properties-ikkunaan käsin, erityisesti silloin kun vaihtoehdot voivat muuttua tai tulla laskentataulukosta. Unload Me komennossa cmdCancel_Click sulkee lomakkeen kokonaan; Me viittaa aina siihen lomakkeeseen, jonka sisällä koodi parhaillaan suoritetaan, joten tämä rivi toimii sellaisenaan riippumatta siitä, mihin nimeen lomake myöhemmin muutetaan.

Esimerkkitapaus: Uuden asiakkaan tallentaminen

Tämä on Save-painikkeen taustalla oleva proseduuri — se, joka todella kirjoittaa uuden rivin tblCustomers-tauluun:

Private Sub cmdSave_Click()
    Dim tbl As ListObject
    Dim newRow As ListRow
 
    Set tbl = ThisWorkbook.Worksheets("Customers").ListObjects("tblCustomers")
    Set newRow = tbl.ListRows.Add
 
    newRow.Range(1, 1).Value = "C" & Format(tbl.ListRows.Count + 1, "000")
    newRow.Range(1, 2).Value = txtCompanyName.Value
    newRow.Range(1, 3).Value = txtContact.Value
    newRow.Range(1, 4).Value = txtEmail.Value
    newRow.Range(1, 5).Value = cboCity.Value
    newRow.Range(1, 6).Value = cboStatus.Value
 
    MsgBox txtCompanyName.Value & " was added successfully."
    Unload Me
End Sub
Rivikohtainen tarkastelu
expand arrow
  • Komento tbl = ThisWorkbook.Worksheets("Customers").ListObjects("tblCustomers") ulottuu lomakkeelta takaisin työkirjaan — UserForm on vain toinen koodin osa, joten kaikki ListObjecteihin liittyvä pätee siihen sellaisenaan;
  • tbl.ListRows.Add lisää aidosti uuden rivin taulukon sisälle sen rajojen mukaisesti sen sijaan, että kirjoitettaisiin viimeisen käytetyn solun ohi käsin;
  • txtCompanyName.Value, cboCity.Value ja muut lukevat sen, mitä käyttäjä on sillä hetkellä kirjoittanut tai valinnut kyseisessä ohjausobjektissa — .Value on yleinen lähes kaikille ohjausobjekteille, minkä vuoksi sama toimintamalli toimii sekä TextBoxeille että ComboBoxeille;
  • Luotu asiakasnumero on yksinkertaistettu esimerkkiä varten — todellinen tunnisteen luonti vaatisi aukkojen ja uudelleenkäytettyjen tunnisteiden tarkistamista, mitä tämä rivi ei tee;
  • Unload Me lopussa sulkee lomakkeen vasta, kun rivi on kirjoitettu — jos lomake suljettaisiin aiemmin, txtCompanyName.Value ja muiden ohjausobjektien arvot eivät olisi enää luettavissa, koska ohjausobjektit lakkaavat olemasta lomakkeen sulkeuduttua.
Note
Huomio

Lomakkeen "Yrityksen nimi" -otsikko on vain käyttäjäystävällisempi nimi taulukon Customer-sarakkeelle — koodi kirjoittaa txtCompanyName.Value kyseiseen sarakkeeseen otsikosta riippumatta, koska VBA:ssa vain TextBoxin nimi on merkityksellinen, ei sen näytöllä näkyvä otsikko.

Note
Huomio

Customer ID ei ole lomakkeella, koska se luodaan automaattisesti koodilla ("C0" & (tbl.ListRows.Count + 100)), eikä käyttäjä syötä sitä itse — tämä vastaa todellisten järjestelmien toimintaa, joissa uudet tunnisteet numeroidaan automaattisesti sen sijaan, että käyttäjä valitsisi yksilöllisen tunnisteen.

Tehtävä

  1. Lisää uusi UserForm, nimeä se frmAddCustomer, ja lisää kolme TextBoxia (txtCompanyName, txtContact, txtEmail) sekä kaksi ComboBoxia (cboCity, cboStatus), jokaiselle oma Label.
  2. Lisää kaksi CommandButtonia, cmdSave ja cmdCancel, ja kirjoita UserForm_Initialize- ja cmdCancel_Click-proseduurit täsmälleen ohjeen mukaan.
  3. Kirjoita cmdSave_Click annetun esimerkin mukaisesti ja lisää tilapäinen painike muualle työkirjaan koodilla frmAddCustomer.Show testataksesi lomakkeen avaamista.
  4. Täytä lomake kuvitteelliselle kuudennelle asiakkaalle ja napsauta Tallenna — varmista, että tblCustomers-tauluun ilmestyy uusi rivi syöttämilläsi arvoilla.
Vihje
expand arrow

1. Lomakkeen rakentaminen

  • Lisää → UserForm VBE:ssä, nimeä se sitten uudelleen Ominaisuudet-ikkunan (Name)-kentässä nimellä frmAddCustomer — älä Caption-kentässä, joka muuttaa vain otsikkopalkin tekstin.
  • Vedä yksi Label + yksi TextBox -pari kullekin: Yrityksen nimi, Yhteyshenkilö ja Sähköposti; yksi Label + yksi ComboBox -pari Kaupunki ja Tila -kentille.
  • Nimeä jokainen ohjausobjekti heti lisäämisen jälkeen — tämä on tapa, jota kappale korosti. Labeleille ei tarvitse antaa koodiin sopivia nimiä, koska niitä ei viitata koodissa, mutta jokainen TextBox/ComboBox/Painike tarvitsee.

2. UserForm_Initialize ja cmdCancel_Click

  • Kaksoisnapsauta lomakkeen tyhjää taustaa (ei ohjausobjektia) päästäksesi UserForm_Initialize-menetelmään — kaksoisnapsauttamalla cmdCancel pääset suoraan cmdCancel_Click-menetelmään.
  • Molemmat proseduurit annettiin sinulle täsmälleen kappaleessa — kirjoita ne muuttamatta.

3. Testaus väliaikaisella painikkeella

  • Tämän painikkeen ei tarvitse olla lomakkeella — lisää se mille tahansa laskentataulukolle kohdasta Kehittäjä → Lisää → Painike (Lomakeohjaus), tai suorita yksirivinen Sub VBE:stä ilman laskentataulukon painiketta.
  • frmAddCustomer.Show on koko koodi lomakkeen näyttämiseen.

4. Koko tallennuksen testaus

  • Täytä kaikki kentät ja valitse arvot molemmista pudotusvalikoista ennen Tallenna-painikkeen painamista — tyhjä ComboBox-valinta kirjoittaa tyhjän solun.
  • Tarkista tblCustomers jälkeenpäin, että uusi rivi, jossa on C00x-tyylinen ID, on lisätty.
Ratkaisu
expand arrow
Private Sub UserForm_Initialize()
    ' runs once, automatically, when the form is first shown
    cboCity.AddItem "Chicago"
    cboCity.AddItem "Boston"
    cboCity.AddItem "Austin"
    cboCity.AddItem "Seattle"
    cboCity.AddItem "Denver"

    cboStatus.AddItem "Active"
    cboStatus.AddItem "Inactive"
    cboStatus.AddItem "Prospect"
End Sub

Private Sub cmdCancel_Click()
    Unload Me
End Sub

Private Sub cmdSave_Click()
    Dim tbl As ListObject
    Dim newRow As ListRow

    Set tbl = ThisWorkbook.Worksheets("Customers").ListObjects("tblCustomers")
    Set newRow = tbl.ListRows.Add

    newRow.Range(1, 1).Value = "C0" & (tbl.ListRows.Count + 100)
    newRow.Range(1, 2).Value = txtCompanyName.Value
    newRow.Range(1, 3).Value = txtContact.Value
    newRow.Range(1, 4).Value = txtEmail.Value
    newRow.Range(1, 5).Value = cboCity.Value
    newRow.Range(1, 6).Value = cboStatus.Value

    MsgBox txtCompanyName.Value & " was added successfully."
    Unload Me
End Sub

Testataksesi tämän, suorita tämä mistä tahansa tavallisesta moduulista (ei UserFormin omasta koodista):

Sub ShowAddCustomerForm()
    frmAddCustomer.Show
End Sub

Paina F5, kun kohdistin on ShowAddCustomerForm-aliohjelman sisällä — lomakkeen pitäisi avautua, ja sen täyttäminen ja Tallenna-painikkeen painaminen lisää uuden rivin tblCustomers-taulukkoon.

Lomakkeen testaaminen
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 2
some-alt