Ensimmäisen VBA-proseduurin kirjoittaminen
Pyyhkäise näyttääksesi valikon
Makrojen tallentaminen opettaa sanastoa; kun kirjoitat makron alusta asti itse, alat ajatella ohjelmoijan tavoin.
Sub-proseduurin rakenne
Jokainen uudelleenkäytettävä VBA-koodilohko, joka suorittaa toiminnon (eikä palauta arvoa, kuten Function), kirjoitetaan Sub-rakenteena:
Sub ProcedureName()
' instructions go here
End Sub
Kun kohdistin on missä tahansa Subin sisällä, paina F5 (tai napsauta vihreää Suorita-nuolta) suorittaaksesi sen. Kommentit — kaikki rivit, jotka alkavat heittomerkillä (') — VBA ohittaa kokonaan; käytä niitä runsaasti selittämään miksi koodi tekee jotakin, ei vain mitä se tekee, sillä mitä yleensä selviää koodista itsestään.
Muotoilutottumukset, jotka maksavat itsensä heti takaisin
- Kirjoita
Option Explicitjokaisen moduulin alkuun — se pakottaa sinut määrittelemään kaikki muuttujat, mikä auttaa havaitsemaan kirjoitusvirheet ennen kuin niistä tulee bugeja; - Sisennä koodi silmukoiden ja
If-lohkojen sisällä yhdellä sarkaimella — VBE ei pakota tätä, mutta sisentämätön koodi muuttuu nopeasti vaikealukuiseksi; - Käytä kuvaavia nimiä (
HighEarnerCount, eix) — kiität itseäsi kolmen viikon päästä.
Esimerkkiharjoitus: Suurituloisten korostaminen
Kirjoitetaan käsin proseduuria, joka käy läpi jokaisen työntekijän taulukossa ja korostaa kaikki, joiden palkka ylittää $55,000 — tämä ei onnistuisi makron tallentimella, koska se vaatii päätöksen (If-lauseen) toistettuna jokaiselle riville (silmukka).
Option Explicit
Sub HighlightTopEarners()
Dim ws As Worksheet
Dim i As Long
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("Employees")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, 6).Value > 55000 Then
ws.Cells(i, 6).Interior.Color = RGB(198, 239, 206)
End If
Next i
MsgBox "Done — high earners are highlighted."
End Sub
Dim ws As Worksheet / Dim i As Long— nämä määrittelevät kaksi muuttujaa:wsviittaa Employees-taulukkoon jailaskee rivejä;- Set
ws = ThisWorkbook.Worksheets("Employees")— tämä on objektimallin tapa: nimeä taulukko suoraan sen sijaan, että luottaisit aktiiviseen taulukkoon; ws.Cells(ws.Rows.Count, 1).End(xlUp).Row— vakiotapa löytää viimeinen käytetty rivi sarakkeestaAriippumatta siitä, kuinka monta työntekijää taulukossa on;For i = 2 To lastRow ... Next i— silmukka, joka toistaa koodin jokaiselle tietoriville alkaen riviltä 2, jotta otsikkorivi ohitetaan;- If
ws.Cells(i, 6).Value > 55000 Then— päätös: vain ne rivit, joissa palkkasarake (sarake 6) ylittää 55000, muotoillaan; MsgBox— yksinkertainen ponnahdusikkuna, joka vahvistaa makron suorittamisen.
Kirjoita tämä proseduurin modIntro-moduuliin, aseta kohdistin sen sisälle ja paina F5. Tarkista luvut itse — Emma Davis ja Olivia Brown ovat kaksi työntekijää, jotka ansaitsevat yli $55,000 esimerkkitaulukossa.
Tehtävä
- Kirjoita
HighlightTopEarnerstäsmälleen kuten esimerkissä modIntro-moduuliin ja suorita se. Varmista, että kaksi riviä muuttuu vihreäksi. - Kopioi proseduurista toinen versio nimellä
HighlightITDepartmentja muuta ehtoa niin, että se korostaa kaikki rivit, joissa Department (sarake 3) on "IT" sen sijaan, että tarkistetaan palkka. - Lisää kommentti jokaisen proseduurin yläpuolelle, jossa yhdessä lauseessa kerrotaan, mitä se tekee — harjoittele kommenttien kirjoittamista lukijalle, ei itsellesi.
- Tallenna työkirja uudelleen (se on edelleen
.xlsm, joten tavallinenCtrl+Sriittää).
- Valitse koko
HighlightTopEarners-proseduuri (alkaenSub-rivistäEnd Sub-riviin), kopioi se ja liitä heti peräänmodIntro-moduuliin. - Nimeä toisen kopion
Sub-rivi muotoonSub HighlightITDepartment()— jokaisella proseduurilla moduulissa täytyy olla yksilöllinen nimi, muuten VBA ei tiedä, mitä suorittaa. - Muutettava ehto on
If-rivi. Tällä hetkellä se tarkistaa luvun:
If ws.Cells(i, 6).Value > 55000 Then
Nyt sen tulee tarkistaa teksti — sarake 3 (Department) on "IT". Muista luvusta 2, että tekstivertailuissa arvo laitetaan lainausmerkkeihin ja käytetään =-operaattoria, ei >.
4. Kaikki muu silmukan sisällä (rivi Interior.Color, silmukan rakenne) voi pysyä ennallaan — vain testattava ehto muuttuu.
Kommenttien lisääminen
- Kommenttirivi alkaa heittomerkillä (
') ja sijoitetaan omalle rivilleen suoraanSub-rivin yläpuolelle — ei proseduurin sisälle. - Kirjoita kommentti kuin selittäisit makron työkaverille, joka ei ole sitä ennen nähnyt, ei muistutuksena itsellesi. Vertaa:
- Ei kovin hyödyllinen:
' loops through rows(kuvaa miten, mikä näkyy jo koodista) - Parempi:
' Highlights employees earning over $55,000(kuvaa mitä saavutetaan, mikä ei ole heti ilmeistä)
- Ei kovin hyödyllinen:
- Tee sama toiselle proseduurille — yksi lause, joka kuvaa, mitä se korostaa ja miksi, liiketoiminnan näkökulmasta (IT-osaston henkilöstö), ei silmukan toimintaa.
' Highlights employees earning over $55,000, to flag top earners at a glance.
Sub HighlightTopEarners()
Dim ws As Worksheet
Dim i As Long
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("Employees")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, 6).Value > 55000 Then
ws.Cells(i, 6).Interior.Color = RGB(198, 239, 206)
End If
Next i
MsgBox "Done — high earners are highlighted."
End Sub
' Highlights every employee who works in the IT department.
Sub HighlightITDepartment()
Dim ws As Worksheet
Dim i As Long
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("Employees")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, 3).Value = "IT" Then
ws.Cells(i, 3).Interior.Color = RGB(198, 239, 206)
End If
Next i
MsgBox "Done — IT department is highlighted."
End Sub
Kirjoita molemmat modIntro-moduuliin, suorita ensin HighlightTopEarners ja varmista, että täsmälleen kaksi riviä muuttuu vihreäksi (Emma Davis $62,000 ja Sophia Miller $59,000 — kolme muuta ovat $55,000 tai alle), sitten suorita HighlightITDepartment ja varmista, että Sophia Millerin rivi korostuu. Tallenna Ctrl+S, kun molemmat toimivat.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Ensimmäisen VBA-proseduurin kirjoittaminen
Makrojen tallentaminen opettaa sanastoa; kun kirjoitat makron alusta asti itse, alat ajatella ohjelmoijan tavoin.
Sub-proseduurin rakenne
Jokainen uudelleenkäytettävä VBA-koodilohko, joka suorittaa toiminnon (eikä palauta arvoa, kuten Function), kirjoitetaan Sub-rakenteena:
Sub ProcedureName()
' instructions go here
End Sub
Kun kohdistin on missä tahansa Subin sisällä, paina F5 (tai napsauta vihreää Suorita-nuolta) suorittaaksesi sen. Kommentit — kaikki rivit, jotka alkavat heittomerkillä (') — VBA ohittaa kokonaan; käytä niitä runsaasti selittämään miksi koodi tekee jotakin, ei vain mitä se tekee, sillä mitä yleensä selviää koodista itsestään.
Muotoilutottumukset, jotka maksavat itsensä heti takaisin
- Kirjoita
Option Explicitjokaisen moduulin alkuun — se pakottaa sinut määrittelemään kaikki muuttujat, mikä auttaa havaitsemaan kirjoitusvirheet ennen kuin niistä tulee bugeja; - Sisennä koodi silmukoiden ja
If-lohkojen sisällä yhdellä sarkaimella — VBE ei pakota tätä, mutta sisentämätön koodi muuttuu nopeasti vaikealukuiseksi; - Käytä kuvaavia nimiä (
HighEarnerCount, eix) — kiität itseäsi kolmen viikon päästä.
Esimerkkiharjoitus: Suurituloisten korostaminen
Kirjoitetaan käsin proseduuria, joka käy läpi jokaisen työntekijän taulukossa ja korostaa kaikki, joiden palkka ylittää $55,000 — tämä ei onnistuisi makron tallentimella, koska se vaatii päätöksen (If-lauseen) toistettuna jokaiselle riville (silmukka).
Option Explicit
Sub HighlightTopEarners()
Dim ws As Worksheet
Dim i As Long
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("Employees")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, 6).Value > 55000 Then
ws.Cells(i, 6).Interior.Color = RGB(198, 239, 206)
End If
Next i
MsgBox "Done — high earners are highlighted."
End Sub
Dim ws As Worksheet / Dim i As Long— nämä määrittelevät kaksi muuttujaa:wsviittaa Employees-taulukkoon jailaskee rivejä;- Set
ws = ThisWorkbook.Worksheets("Employees")— tämä on objektimallin tapa: nimeä taulukko suoraan sen sijaan, että luottaisit aktiiviseen taulukkoon; ws.Cells(ws.Rows.Count, 1).End(xlUp).Row— vakiotapa löytää viimeinen käytetty rivi sarakkeestaAriippumatta siitä, kuinka monta työntekijää taulukossa on;For i = 2 To lastRow ... Next i— silmukka, joka toistaa koodin jokaiselle tietoriville alkaen riviltä 2, jotta otsikkorivi ohitetaan;- If
ws.Cells(i, 6).Value > 55000 Then— päätös: vain ne rivit, joissa palkkasarake (sarake 6) ylittää 55000, muotoillaan; MsgBox— yksinkertainen ponnahdusikkuna, joka vahvistaa makron suorittamisen.
Kirjoita tämä proseduurin modIntro-moduuliin, aseta kohdistin sen sisälle ja paina F5. Tarkista luvut itse — Emma Davis ja Olivia Brown ovat kaksi työntekijää, jotka ansaitsevat yli $55,000 esimerkkitaulukossa.
Tehtävä
- Kirjoita
HighlightTopEarnerstäsmälleen kuten esimerkissä modIntro-moduuliin ja suorita se. Varmista, että kaksi riviä muuttuu vihreäksi. - Kopioi proseduurista toinen versio nimellä
HighlightITDepartmentja muuta ehtoa niin, että se korostaa kaikki rivit, joissa Department (sarake 3) on "IT" sen sijaan, että tarkistetaan palkka. - Lisää kommentti jokaisen proseduurin yläpuolelle, jossa yhdessä lauseessa kerrotaan, mitä se tekee — harjoittele kommenttien kirjoittamista lukijalle, ei itsellesi.
- Tallenna työkirja uudelleen (se on edelleen
.xlsm, joten tavallinenCtrl+Sriittää).
- Valitse koko
HighlightTopEarners-proseduuri (alkaenSub-rivistäEnd Sub-riviin), kopioi se ja liitä heti peräänmodIntro-moduuliin. - Nimeä toisen kopion
Sub-rivi muotoonSub HighlightITDepartment()— jokaisella proseduurilla moduulissa täytyy olla yksilöllinen nimi, muuten VBA ei tiedä, mitä suorittaa. - Muutettava ehto on
If-rivi. Tällä hetkellä se tarkistaa luvun:
If ws.Cells(i, 6).Value > 55000 Then
Nyt sen tulee tarkistaa teksti — sarake 3 (Department) on "IT". Muista luvusta 2, että tekstivertailuissa arvo laitetaan lainausmerkkeihin ja käytetään =-operaattoria, ei >.
4. Kaikki muu silmukan sisällä (rivi Interior.Color, silmukan rakenne) voi pysyä ennallaan — vain testattava ehto muuttuu.
Kommenttien lisääminen
- Kommenttirivi alkaa heittomerkillä (
') ja sijoitetaan omalle rivilleen suoraanSub-rivin yläpuolelle — ei proseduurin sisälle. - Kirjoita kommentti kuin selittäisit makron työkaverille, joka ei ole sitä ennen nähnyt, ei muistutuksena itsellesi. Vertaa:
- Ei kovin hyödyllinen:
' loops through rows(kuvaa miten, mikä näkyy jo koodista) - Parempi:
' Highlights employees earning over $55,000(kuvaa mitä saavutetaan, mikä ei ole heti ilmeistä)
- Ei kovin hyödyllinen:
- Tee sama toiselle proseduurille — yksi lause, joka kuvaa, mitä se korostaa ja miksi, liiketoiminnan näkökulmasta (IT-osaston henkilöstö), ei silmukan toimintaa.
' Highlights employees earning over $55,000, to flag top earners at a glance.
Sub HighlightTopEarners()
Dim ws As Worksheet
Dim i As Long
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("Employees")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, 6).Value > 55000 Then
ws.Cells(i, 6).Interior.Color = RGB(198, 239, 206)
End If
Next i
MsgBox "Done — high earners are highlighted."
End Sub
' Highlights every employee who works in the IT department.
Sub HighlightITDepartment()
Dim ws As Worksheet
Dim i As Long
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("Employees")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, 3).Value = "IT" Then
ws.Cells(i, 3).Interior.Color = RGB(198, 239, 206)
End If
Next i
MsgBox "Done — IT department is highlighted."
End Sub
Kirjoita molemmat modIntro-moduuliin, suorita ensin HighlightTopEarners ja varmista, että täsmälleen kaksi riviä muuttuu vihreäksi (Emma Davis $62,000 ja Sophia Miller $59,000 — kolme muuta ovat $55,000 tai alle), sitten suorita HighlightITDepartment ja varmista, että Sophia Millerin rivi korostuu. Tallenna Ctrl+S, kun molemmat toimivat.
Kiitos palautteestasi!