VBA dünaamiline ulatus

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
wave wave wave wave wave