VBA dinaminis diapazonas

Šis straipsnis parodys, kaip sukurti dinaminį diapazoną „Excel VBA“.

Konkretaus langelių diapazono paskelbimas kintamuoju „Excel VBA“ leidžia dirbti tik su tomis ląstelėmis. Skelbdami dinaminius diapazonus programoje „Excel“, mes įgyjame daug daugiau lankstumo dėl savo kodo ir funkcijų, kurias jis gali atlikti.

Nuorodų diapazonai ir ląstelės

Kai „Excel“ nurodome diapazoną ar langelį, paprastai nurodome juos koduodami eilutę ir stulpelius, kurių mums reikia.

Diapazono nuosavybė

Naudodami diapazono ypatybę, toliau pateiktose kodo eilučių pavyzdžiuose galime atlikti veiksmus su šiuo diapazonu, pvz., Pakeisti langelių spalvą arba paryškinti langelius.

12 Diapazonas („A1: A5“). Šriftas.Spalva = vbRedDiapazonas („A1: A5“). Šriftas. Paryškintas = tiesa

Ląstelių nuosavybė

Panašiai galime naudoti langelių ypatybę, norėdami nurodyti ląstelių diapazoną, tiesiogiai nurodydami ląstelių ypatybės eilutę ir stulpelį. Eilutė visada turi būti skaičius, bet stulpelis gali būti skaičius arba raidė, esanti kabutėse.

Pavyzdžiui, langelio adresą A1 galima nurodyti taip:

1 Ląstelės (1,1)

Arba

1 Ląstelės (1, "A")

Norėdami naudoti langelių ypatybę, norėdami nurodyti ląstelių diapazoną, turime nurodyti diapazono pradžią ir diapazono pabaigą.

Pavyzdžiui, A1: A6 atskaitos diapazonui galėtume naudoti šią sintaksę:

1 Diapazonas (langeliai (1,1), langeliai (1,6)

Tada mes galime naudoti ypatybę Ląstelės, kad atliktume veiksmus diapazone, kaip nurodyta toliau pateiktose kodo eilutėse:

12 Diapazonas (langeliai (2, 2), langeliai (6, 2)). Šriftas. Spalva = vbRedDiapazonas (langeliai (2, 2), langeliai (6, 2)). Šriftas. Bold = tiesa

Dinaminiai diapazonai su kintamaisiais

Kadangi „Excel“ keičiasi mūsų duomenų dydis (t. Y. Naudojame daugiau eilučių ir stulpelių, kuriuos užkodavome), būtų naudinga, jei pasikeistų ir diapazonai, kuriuos nurodome savo kode. Naudodami aukščiau esantį objektą Diapazonas galime sukurti kintamuosius, kad būtų saugomi maksimalūs naudojamo „Excel“ darbalapio srities eilučių ir stulpelių numeriai, ir naudodami šiuos kintamuosius dinamiškai koreguokite diapazono objektą, kol kodas veikia.

Pavyzdžiui

1234 Dim lRow kaip sveikasis skaičiusDim lCol kaip sveikasis skaičiuslRow = Diapazonas ("A1048576"). Pabaiga (xlUp) .EilutėlCol = Diapazonas ("XFD1"). Pabaiga (xlToLeft). Stulpelis

Paskutinė eilutė stulpelyje

Kadangi darbalapyje yra 1048576 eilučių, kintamasis lRow pereis į lapo apačią, o tada naudosis specialiu klavišo „End“ ir rodyklės aukštyn klavišų deriniu, kad pereitumėte į paskutinę darbalapyje naudojamą eilutę - tai suteiks mums eilutės, kurios mums reikia mūsų diapazone, skaičius.

Paskutinis stulpelis eilutėje

Panašiai „lCol“ pereis į XFD stulpelį, kuris yra paskutinis darbalapio stulpelis, tada naudokite specialų klavišų kombinaciją „End“ ir rodyklės kairėn klavišus, kad pereitumėte prie paskutinio darbalapyje naudojamo stulpelio - tai suteiks mums mums reikalingo stulpelio numeris.

Todėl, norėdami gauti visą diapazoną, kuris naudojamas darbalapyje, galime paleisti šį kodą:

1234567891011 Sub GetRange ()Dim lRow As IntegerDim lCol As IntegerDim rng As RangelRow = Diapazonas ("A1048576"). Pabaiga (xlUp) .Eilutė„naudokite„ lRow “, kad padėtumėte rasti paskutinį diapazono stulpelįlCol = Diapazonas ("XFD" ir lRow). Pabaiga (xlToLeft). StulpelisNustatyti rng = Diapazonas (langeliai (1, 1), langeliai (lRow, lCol))„msgbox“, kad parodytumėte mums diapazoną„MsgBox“ diapazonas yra „& rng.Address“Pabaiga Sub

Specialios ląstelės - „LastCell“

Taip pat galime naudoti diapazono objekto „SpecialCells“ metodą, kad paskutinė eilutė ir stulpelis būtų naudojami darbalapyje.

123456789101112 Sub UseSpecialCells ()Dim lRow As IntegerDim lCol As IntegerDim rng As RangeDim rngBegin As RangeNustatyti rngBegin = Diapazonas („A1“)lRow = rngBegin.SpecialCells (xlCellTypeLastCell) .RowlCol = rngBegin.SpecialCells (xlCellTypeLastCell). StulpelisNustatyti rng = Diapazonas (langeliai (1, 1), langeliai (lRow, lCol))„msgbox“, kad parodytume diapazoną„MsgBox“ diapazonas yra „& rng.Address“Pabaiga Sub

„UsedRange“

Naudojamo diapazono metodas apima visas ląsteles, kuriose yra reikšmių dabartiniame darbalapyje.

123456 Sub UsedRangeExample ()Dim rng As RangeNustatykite rng = ActiveSheet.UsedRange„msgbox“, kad parodytumėte mums diapazoną„MsgBox“ diapazonas yra „& rng.Address“Pabaiga Sub

Dabartinis regionas

Dabartinis regionas skiriasi nuo „UsedRange“ tuo, kad jis žiūri į ląsteles supančias ląsteles, kurias paskelbėme kaip pradinį diapazoną (ty kintamąjį „rngBegin“ žemiau pateiktame pavyzdyje), ir tada apžiūri visas „prijungtas“ ar susietas ląsteles į tą deklaruotą kamerą. Jei eilutėje ar stulpelyje atsiranda tuščių langelių, „CurrentRegion“ nustos ieškoti kitų langelių.

12345678 Sub CurrentRegion ()Dim rng As RangeDim rngBegin As RangeNustatyti rngBegin = Diapazonas („A1“)Nustatykite rng = rngBegin.CurrentRegion„msgbox“, kad parodytumėte mums diapazoną„MsgBox“ diapazonas yra „& rng.Address“Pabaiga Sub

Jei naudojame šį metodą, turime įsitikinti, kad visos reikiamo diapazono ląstelės yra sujungtos, be jų nėra tuščių eilučių ar stulpelių.

Pavadintas diapazonas

Savo kode taip pat galime nurodyti pavadintus diapazonus. Pavadinti diapazonai gali būti dinamiški, nes kai duomenys atnaujinami arba įterpiami, diapazono pavadinimas gali būti pakeistas, įtraukiant naujus duomenis.

Šiame pavyzdyje diapazono pavadinimo „sausis“ šriftas bus paryškintas

12345 Antrasis diapazonasPavadinimas ()Dim rng kaip diapazonasNustatyti rng = Diapazonas („sausis“)rng.Font.Bold = = TiesaPabaiga Sub

Kaip matysite paveikslėlyje žemiau, jei prie diapazono pavadinimo pridedama eilutė, diapazono pavadinimas automatiškai atnaujinamas, įtraukiant tą eilutę.

Jei mes vėl paleistume pavyzdinį kodą, kodo paveiktas diapazonas būtų C5: C9, o iš pradžių tai būtų buvęs C5: C8.

Lentelės

Savo kode galime nurodyti nuorodas į lenteles (spustelėkite, jei norite gauti daugiau informacijos apie lentelių kūrimą ir valdymą VBA). Kai „Excel“ lentelės duomenys yra atnaujinami arba keičiami, kodas, nurodantis lentelę, nurodys atnaujintus lentelės duomenis. Tai ypač naudinga, kai kalbama apie „Pivot“ lenteles, prijungtas prie išorinio duomenų šaltinio.

Naudodami šią lentelę savo kode, galime remtis lentelės stulpeliais pagal kiekvieno stulpelio antraštes ir atlikti veiksmus su stulpeliu pagal jų pavadinimą. Kadangi lentelės eilutės didėja arba mažėja pagal duomenis, lentelės diapazonas atitinkamai koreguosis, o mūsų kodas vis tiek veiks visam lentelės stulpeliui.

Pavyzdžiui:

123 Sub DeleteTableColumn ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListColumns ("Tiekėjas"). IštrintiPabaiga Sub
wave wave wave wave wave