Loopit ja VBA sopivat yhteen, ja myös hyvästä syystä. Kun käsittelet Microsoft Office -objekteja, kuten työkirjoja, laskentataulukoita ja alueita, silmukat voivat auttaa sinua vaihtamaan niiden välillä suhteellisen helposti.
Vaikka enemmän tai vähemmän kaikki VBA-silmukat toimivat hyvin objektien kanssa, 'jokaiselle' -silmukka on yksi parhaista vaihtoehdoista työskennellä objektikokoelmien kanssa. Jos olet uusi Excel VBA:ssa ja haluat hallita jokaisen silmukan, voit oppia joistakin näistä esimerkeistä nopeasti. Tässä on kaikki mitä sinun tulee tietää tästä olennaisesta silmukasta.
PÄIVÄN VIDEON TEKEMINEN JATKA SISÄLLÖLLÄ VIERÄTÄ
Jokaisen silmukan syntaksille
Jokaisen silmukan syntaksi on melko samanlainen kuin tavallinen for silmukan Excel VBA:ssa. Tässä on syntaksi:
For each variable_name in object_collection
[statement]
[statement]
[statement]
Next variable_name
Silmukka alkaa 'jokaiselle' avainsanalla; voit käyttää mitä tahansa muuttujan nimeä ja sen jälkeen objektikokoelmaa. Jokaisen silmukan objekti voi olla soluja, alueita, taulukoita ja jopa työkirjoja. Tällainen on tämän silmukan kauneus; se antaa sinulle joustavuuden työskennellä eri Excel-kokoelmien kanssa.
Silmukka kiertää jokaisen kokoelmaarvon läpi ja tallentaa viitteen määritettyyn muuttujan nimeen. Suorituksen jälkeen VBA suorittaa silmukassa tallennetut lausekkeet ja siirtyy kokoelman seuraavaan objektiin ( Seuraava avainsana on hyödyllinen tässä). Ymmärretään koodin rakenne perusesimerkillä.
Jokaisen silmukan käyttäminen Excel VBA:ssa
Oletetaan, että haluat tulostaa numeron soluihin A1–A10. Paras tapa on käyttää for kullekin silmukalle range-funktiota ja antaa koodin tehdä tarvittavat. Näin voit tehdä tämän yksinkertaisen tehtävän:
- Avaa VBA-koodieditori painamalla Kaikki + F11 .
- Lisää moduuli napsauttamalla Moduuli vaihtoehto sisällä Lisää -välilehti.
- Luo alirutiini käyttämällä sub()-komentoa koodieditorimoduulin ikkunassa. Varmista, että annat aliohjelmalle merkityksellisen nimen. Tässä esimerkissä voit käyttää nimeä for_each_loop .
Nyt kun perusasiat ovat poissa tieltä, on aika aloittaa koodin kirjoittaminen. Kirjoita aliohjelmassa seuraavat komennot:
Dim cell as range
For each cell in Sheets("Sheet1").Range("A1:A10")
cell.value = 10
Next cell
Kun koodi suoritetaan, c muuttuja tallentaa A1:n arvon. Seuraavaksi siirryttäessä lauseeseen silmukan sisällä se arvioi komennon ja syöttää arvon 10 määritettyyn soluun, eli soluun A1.
Lopuksi, kun se siirtyy Seuraava-avainsanaan, se siirtyy seuraavaan arvoon, eli soluun A2. Silmukka kulkee, kunnes se saavuttaa solun A10. Tämä on lopullinen tulos:
Silmukan käyttäminen objektien kanssa: solut, taulukot ja työkirjat
Excelissä on kolme pääobjektityyppiä, joiden kanssa työskentelet säännöllisesti. Nämä ovat soluja, taulukoita ja työkirjoja. Näin voit käyttää silmukkaa kaikkien kolmen objektityypin kanssa.
Työskentely solujen ja silmukoiden kanssa yhdessä
Oletetaan, että haluat lisätä arvon ja joitakin muotoiluehtoja Sheet1:n solualueelle. Ensimmäisenä vaiheena sinun on määritettävä ehdot silmukassa ja sen jälkeen muotoilukomennot.
Kirjoita seuraava koodi aliohjelmaan.
miksi puhelin kuumenee latauksen aikana
Sub for_each_loop()
Dim c As Range
For Each c In Sheets("Sheet1").Range("A1:A10")
With c
.Value = 10
.Font.Color = vbRed
.Font.Bold = True
.Font.Strikethrough = True
End With
Next c
End Sub
The kanssa toiminto on hyödyllinen suoritettaessa useita toimintoja yhdelle tietylle objektille. Koska haluat suorittaa sarjan tehtäviä c-muuttujalla, voit yhdistää ne kaikki käyttämällä with..end with -funktiota.
Silmukka rinnastaa c:n arvon kunkin solun arvon kanssa ja syöttää arvon 10:ksi. Lisäksi se muuttaa solun värin punaiseksi, lihavoittaa arvon ja ylittää sen. Kun se on suorittanut kaikki vaiheet, se siirtyy seuraavaan määritettyyn arvoon alueella.
Silmukan käyttäminen taulukoiden ohjaamiseen
Kuten yllä olevassa esimerkissä, voit käyttää jokaista silmukkaa ohjataksesi arkkeja. Entä jos muuttaisit Sheet1:n nimen Sheet3:ksi VBA:n avulla?
Voit nimetä olemassa olevan laskentataulukon uudelleen Excelissä VBA:n avulla seuraavalla koodilla:
Sub for_each_loop_sheets()
For Each sht In ThisWorkbook.Sheets
If sht.Name = "Sheet1" Then
sht.Name = "Sheet3"
End If
Next sht
End Sub
Koodi kiertää jokaisen työkirjan arkin läpi ja tarkistaa jokaisen arkin nimen. Jos se kohtaa nimen Sheet1, se muuttaa sen muotoon Sheet3. Se etenee työkirjan jäljellä olevien arkkien läpi, jos sellaisia on. Kun koodin suoritus saavuttaa viimeisen arkin, se poistuu silmukasta ja aliohjelmasta.
Joidenkin muiden yleisten käyttötarkoitusten joukossa voit yhdistää useita laskentataulukoita VBA:n avulla ja päivitä sisältö yhdelle arkille silmukoiden avulla.
Siirry työkirjojen läpi silmukan avulla
Lopuksi voit käyttää kullekin silmukalle -painiketta vaihtaaksesi eri työkirjoja ja suorittaaksesi tiettyjä tehtäviä. Esitetään tämä toiminto esimerkillä.
VBA-komentojen avulla voit lisätä kolme uutta työkirjaa ja sulkea kaikki avoimet yhteen. Näin voit tehdä sen:
Sub loop_wrkbook()
Dim wrkbook as workbook
Workbooks.Add
Workbooks.Add
Workbooks.Add
For Each wrkbook In Workbooks
wrkbook.
Next wrkbook
End Sub