See artikkel näitab, kuidas Excelis VBA dünaamilist vahemikku luua.
Konkreetse lahtrivahemiku kuulutamine muutujaks Excel VBA -s piirab meid ainult nende konkreetsete lahtritega töötamisega. Dünaamiliste vahemike deklareerimisega Excelis saame oma koodi ja selle funktsionaalsuse osas palju paindlikumaks.
Vahemike ja lahtrite viitamine
Kui viidame Excelis vahemikule või lahtrile, viitame neile tavaliselt vajaliku rea ja veergude kõvakoodiga.
Vahemiku kinnisvara
Kasutades vahemiku atribuuti, saame allolevas näites koodiridades teha selles vahemikus toiminguid, näiteks muuta lahtrite värvi või muuta need paksuks.
12 | Vahemik ("A1: A5"). Font.Color = vbRedVahemik ("A1: A5"). Font.Bold = True |
Lahtrite vara
Samamoodi võime kasutada atribuuti Lahtrid lahtrivahemikule viitamiseks, viidates lahtrite atribuudi reale ja veerule. Rida peab alati olema number, kuid veerg võib olla number või jutumärkides olev täht.
Näiteks lahtri aadressile A1 saab viidata järgmiselt:
1 | Rakud (1,1) |
Või
1 | Lahtrid (1, "A") |
Lahtrite atribuudi kasutamiseks lahtrivahemikule viitamiseks peame näitama vahemiku alguse ja vahemiku lõpu.
Näiteks võrdlusvahemiku A1: A6 puhul võiksime kasutada järgmist süntaksit:
1 | Vahemik (lahtrid (1,1), lahtrid (1,6) |
Seejärel saame kasutada atribuuti Cells, et teostada vahemikus toiminguid vastavalt allpool toodud koodiridadele:
12 | Vahemik (lahtrid (2, 2), lahtrid (6, 2)). Font. Värv = vbRedVahemik (lahtrid (2, 2), lahtrid (6, 2)). Font. Paks = tõene |
Dünaamilised vahemikud muutujatega
Kuna meie andmete suurus Excelis muutub (st me kasutame rohkem ridu ja veerge, mida meie kodeeritud vahemikud), oleks kasulik, kui muutuksid ka meie koodis viidatud vahemikud. Ülaltoodud objekti Vahemik abil saame luua muutujaid, et salvestada meie kasutatava Exceli töölehe ala maksimaalsed ridade ja veergude numbrid, ning kasutada neid muutujaid koodi töötamise ajal dünaamiliselt vahemiku objekti reguleerimiseks.
Näiteks
1234 | Dim lRow täisarvunaDim lCol täisarvunalRida = Vahemik ("A1048576"). Lõpp (xlUp) .RidalCol = Vahemik ("XFD1"). Lõpp (xlToLeft). Veerg |
Viimane rida veerus
Kuna töölehel on 1048576 rida, läheb muutuja lRow lehe alaossa ja kasutab seejärel töölehe viimasele reale liikumiseks klahvi End ja ülesnoolklahvi spetsiaalset kombinatsiooni - see annab meile rea arv, mida vajame oma vahemikus.
Viimane veerg reas
Samamoodi liigub lCol veergu XFD, mis on töölehe viimane veerg, ja kasutab seejärel töölehe viimasele veerule liikumiseks spetsiaalset klahvikombinatsiooni End ja pluss vasaknool - see annab meile veergu, mida vajame oma vahemikus.
Seetõttu saame kogu töölehel kasutatava vahemiku saamiseks käivitada järgmise koodi:
1234567891011 | Alam GetRange ()Dim lRow täisarvunaDim lCol täisarvunaDim rng As RangelRida = Vahemik ("A1048576"). Lõpp (xlUp) .Rida'kasutage lRow abil vahemiku viimast veergulCol = Vahemik ("XFD" & lRow) .Lõpp (xlToLeft) .VeergMäära rng = vahemik (lahtrid (1, 1), lahtrid (lRow, lCol))'msgbox, et näidata meile vahemikkuMsgBox "Vahemik on" & rng.AadressEnd Sub |
SpecialCells - LastCell
Töölehe viimase rea ja veeru saamiseks saame kasutada ka vahemiku objekti meetodit SpecialCells.
123456789101112 | AlamkasutusSpecialCells ()Dim lRow täisarvunaDim lCol täisarvunaDim rng As RangeDim rngBegin As RangeMäära rngBegin = Vahemik ("A1")lRow = rngBegin.SpecialCells (xlCellTypeLastCell) .RidalCol = rngBegin.SpecialCells (xlCellTypeLastCell). VeergMäära rng = vahemik (lahtrid (1, 1), lahtrid (lRow, lCol))'msgbox, et näidata meile vahemikkuMsgBox "Vahemik on" & rng.AadressEnd Sub |
UsedRange
Kasutatud vahemiku meetod hõlmab kõiki lahtreid, millel on praegusel töölehel väärtused.
123456 | AlamkasutusRangeExample ()Dim rng As RangeMäära rng = ActiveSheet.UsedRange'msgbox, et näidata meile vahemikkuMsgBox "Vahemik on" & rng.AadressEnd Sub |
Praegune piirkond
Praegune piirkond erineb UsedRange'ist selle poolest, et see vaatab lahtreid ümbritsevaid lahtreid, mille oleme deklareerinud lähtevahemikuna (st muutuja rngBegin allolevas näites), ja seejärel vaatab kõiki lahtreid, mis on "kinnitatud" või seotud sellesse deklareeritud lahtrisse. Kui reas või veerus peaks olema tühi lahter, lõpetab CurrentRegion edasiste lahtrite otsimise.
12345678 | Alampiirkond ()Dim rng As RangeDim rngBegin As RangeMäära rngBegin = Vahemik ("A1")Määra rng = rngBegin.CurrentRegion'msgbox, et näidata meile vahemikkuMsgBox "Vahemik on" & rng.AadressEnd Sub |
Kui kasutame seda meetodit, peame veenduma, et kõik vajaliku vahemiku lahtrid on ühendatud ilma tühjade ridade või veergudeta.
Nimega vahemik
Samuti võime oma koodis viidata nimega vahemikele. Nimetatud vahemikud võivad olla dünaamilised, kuivõrd andmete uuendamisel või sisestamisel võib vahemiku nimi muutuda uute andmete kaasamiseks.
See näide muudab vahemiku nime “Jaanuar” fondi paksuks
12345 | AlamvahemikNimi Näide ()Dim rng kui vahemikMäära rng = Vahemik ("Jaanuar")rng.Font.Bold = = TõsiEnd Sub |
Nagu näete alloleval pildil, kui vahemiku nimele lisatakse rida, värskendatakse vahemiku nime automaatselt, et see rida lisada.
Kui peaksime näitekoodi uuesti käivitama, oleks koodist mõjutatud vahemik C5: C9, samas kui esmalt oleks see olnud C5: C8.
Tabelid
Saame oma koodis viidata tabelitele (lisateabe saamiseks tabelite loomise ja töötlemise kohta VBA -s). Kui Exceli tabeli andmeid värskendatakse või muudetakse, viitab tabelile viitav kood seejärel värskendatud tabeli andmetele. See on eriti kasulik, kui viidatakse välisele andmeallikale ühendatud Pivot -tabelitele.
Kasutades seda tabelit meie koodis, saame viidata tabeli veergudele iga veeru pealkirjade järgi ja teha veerus toiminguid nende nime järgi. Kui tabeli read vastavalt andmetele suurenevad või vähenevad, kohandub tabelivahemik vastavalt ja meie kood töötab endiselt kogu tabeli veeru puhul.
Näiteks:
123 | Sub DeleteTableColumn ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListColumns ("tarnija"). KustutaEnd Sub |