Vahemikud ja rakud VBA -s
Exceli arvutustabelid salvestavad andmed lahtritesse. Lahtrid on paigutatud ridadesse ja veergudesse. Iga lahtri saab tuvastada selle rea ja veeru lõikepunkti järgi (näit. B3 või R3C2).
Exceli vahemik viitab ühele või mitmele lahtrile (nt A3: B4)
Lahtri aadress
A1 Märge
A1 tähistuses tähistatakse lahtrit selle veerutähega (A -st XFD -ni), millele järgneb selle rea number (1 kuni 1 048 576).
VBA -s saate viidata mis tahes lahtrile, kasutades Vahemiku objekt.
123456789 | "Vaadake lahtrit B4 aktiivsel lehelMsgBoxi vahemik ("B4")"Vaadake lahtrit B4 lehel nimega" Andmed "MsgBoxi töölehed ("Andmed"). Vahemik ("B4")'Vaadake lahtrit B4 lehel nimega' Andmed 'teises OPEN töövihikusnimega „Minu andmed”MsgBoxi töövihikud ("Minu andmed"). Töölehed ("Andmed"). Vahemik ("B4") |
R1C1 märge
Märkuses R1C1 tähistatakse lahtrit R, millele järgneb rea number, seejärel täht „C”, millele järgneb veeru number. nt R4C2 tähistab R1C1 märgistuses B4. VBA -s kasutate Lahtrite objekt R1C1 märgistuse kasutamiseks:
12 | "Vaadake lahtrit R [6] C [4], st D6Lahtrid (6, 4) = "D6" |
Lahtrite vahemik
A1 Märge
Rohkem kui ühele lahtrile viitamiseks kasutage lahtri alg- ja viimase lahtri aadressi vahel ":". Järgnev viitab kõigile lahtritele A1 kuni D10:
1 | Vahemik ("A1: D10") |
R1C1 märge
Rohkem kui ühele lahtrile viitamiseks kasutage lahtri algse aadressi ja viimase lahtri aadressi vahel tähte. Järgnev viitab kõigile lahtritele A1 kuni D10:
1 | Vahemik (lahtrid (1, 1), lahtrid (10, 4)) |
Rakkudele kirjutamine
Väärtuste kirjutamiseks lahtrisse või külgnevasse lahtrirühma vaadake lihtsalt vahemikku, pange märk = ja kirjutage seejärel salvestatav väärtus:
12345678910 | „Salvestage F5 lahtrisse aadressiga F6Vahemik ("F6") = "F6"„Salvestage E6 lahtrisse aadressiga R [6] C [5], st E6Lahtrid (6, 5) = "E6"„Hoidke A1: D10 vahemikus A1: D10Vahemik ("A1: D10") = "A1: D10"'võiVahemik (lahtrid (1, 1), lahtrid (10, 4)) = "A1: D10" |
Lugemine rakkudest
Väärtuste lugemiseks lahtritest vaadake lihtsalt väärtuste salvestamiseks muutujat, pange märk = ja seejärel vaadake loetavat vahemikku:
1234567891011 | Dim val1Dim val2„Lugege lahtrist F6val1 = Vahemik ("F6")„Lugege lahtrist E6val2 = lahtrid (6, 5)MsgBox val1Msgbox val2 |
Märkus. Lahtrite vahemiku väärtuste salvestamiseks peate lihtsa muutuja asemel kasutama massiivi.
Mitte külgnevad rakud
Mitte -külgnevatele lahtritele viitamiseks kasutage lahtri aadresside vahel koma:
123456 | „Salvestage 10 lahtritesse A1, A3 ja A5Vahemik ("A1, A3, A5") = 10„Salvestage 10 lahtritesse A1: A3 ja D1: D3)Vahemik ("A1: A3, D1: D3") = 10 |
Rakkude ristmik
Mitte -külgnevatele lahtritele viitamiseks kasutage lahtrite aadresside vahel tühikut.
123 | „Säilitage kolonn D” jaotises D1: D10"mis on tavaline A1: D10 ja D1: F10 vahelVahemik ("A1: D10 D1: G10") = "veerg D" |
Lahtri või vahemiku nihe
Nihkefunktsiooni abil saate viite antud vahemikust (lahtrist või lahtrirühmast) teisaldada määratud arvu_veergude ja veergude arvu võrra.
Nihke süntaks
Vahemik.Nihke (ridade_arv, veergude_arv)
Lahtrist nihkumine
12345678910111213141516 | 'NULL lahtrist A1"Vaadake lahtrit ennast„Teisaldage 0 rida ja 0 veerguVahemik ("A1"). Nihe (0, 0) = "A1"„Teisaldage 1 rida ja 0 veerguVahemik ("A1"). Nihe (1, 0) = "A2"„Teisaldage 0 rida ja 1 veerguVahemik ("A1"). Nihe (0, 1) = "B1"'Liigutage 1 rida ja 1 veerguVahemik ("A1"). Nihe (1, 1) = "B2"'Liigutage 10 rida ja 5 veerguVahemik ("A1"). Nihe (10, 5) = "F11" |
Vahemiku nihe
123 | „Liigita viide vahemikule A1: D4 4 rea ja 4 veeru võrraUus viide on E5: H8Vahemik ("A1: D4"). Nihe (4,4) = "E5: H8" |
Vahemiku määramine
Vahemiku muutujale vahemiku määramine: deklareerige muutuja tüüpi Vahemik, seejärel kasutage käsku Seadista see vahemikuks. Pange tähele, et peate kasutama käsku SET, kuna RANGE on objekt:
12345678 | 'Kuulutage muutuja vahemikDim myRange vahemikuna'Seadke muutuja vahemikku A1: D4Määra myRange = vahemik ("A1: D4")„Prindib $ A $ 1: $ D $ 4MsgBox myRange. Aadress |
Vahemiku suuruse muutmine
Vahemiku objekti suuruse muutmise meetod muudab võrdlusvahemiku mõõtmeid:
1234567 | Dim myRange kui vahemik'Vahemik suuruse muutmiseksMäära myRange = vahemik ("A1: F4")„Prindib $ A $ 1: $ E $ 10Silumine. Prindi myRange. Muuda suurust (10, 5). Aadress |
Resize vahemiku ülemine vasakpoolne lahter on sama mis algse vahemiku vasakpoolne ülemine lahter
Muuda süntaksi suurust
Vahemik. Suuruse muutmine (ridade_arv, veergude_arv)
Nihke vs suuruse muutmine
Nihe ei muuda vahemiku mõõtmeid, vaid liigutab seda määratud arvu ridade ja veergude võrra. Suuruse muutmine ei muuda algse vahemiku asukohta, vaid muudab mõõtmed määratud arvu ridade ja veergude jaoks.
Kõik lahtrid lehel
Objekt Lahtrid viitab kõigile lehe lahtritele (1048576 rida ja 16384 veergu).
12 | „Tühjendage kõik töölehtede lahtridRakud. Selge |
UsedRange
Atribuut UsedRange annab teile ristkülikukujulise vahemiku kasutatud lahtri ülemisest vasakust lahtrist kuni aktiivse lehe parema alumise kasutatud lahtrini.
1234567 | Dim ws töölehenaMäära ws = ActiveSheet„$ B $ 2: $ L $ 14, kui L2 on esimene väärtusega lahter"ja L14 on viimane lahter, millel on väärtus'aktiivne lehtSilumine. Prindi ws. Kasutatud vahemik. Aadress |
Praegune piirkond
Atribuut CurrentRegion annab teile külgneva ristkülikukujulise vahemiku ülemisest vasakust lahtrist kuni parema alumise kasutatud lahtrini, mis sisaldab viidatud lahtrit/vahemikku.
1234567891011 | Dim myRange kui vahemikMäära myRange = vahemik ("D4: F6")„Prindib $ B $ 2: $ L $ 14„Kui tee D4: F16 kuni B2 ja L14 on täidetudSilumine. Prindi myRange. Praegune piirkond. Aadress"Võite viidata ka ühele lähterakuleSet myRange = Range ("D4") 'Prindib $ B $ 2: $ L $ 14 |
Vahemiku omadused
Aadressi, lahtri rea/veeru numbri ja ridade/veergude arvu saate allpool toodud vahemikus.
123456789101112131415161718192021 | Dim myRange kui vahemikMäära myRange = vahemik ("A1: F10")„Prindib $ A $ 1: $ F $ 10Silumine. Prindi myRange. AadressMäära myRange = vahemik ("F10")„Trükib 10 rea 10 eestSilumine. Prindi myRange. Rida„Trükib 6 veergu FSilumine. Prindi myRange. VeergMäära myRange = vahemik ("E1: F5")„Prindib 5 vahemiku ridade arvu jaoksSilumine. Prindi myRange.Rows.Count„Prindib 2 vahemiku veergude arvu jaoksSilumine. Prindi myRange. Veerud. Loend |
Lehe viimane lahter
Sa võid kasutada Ridad. Loend ja Veerud. Loend omadused koos Rakud objekti, et saada lehe viimane lahter:
1234567891011 | 'Printige viimase rea number„Prindib 1048576Silumine. Prindi "Lehe read:" & Ridad. Arv'Printige viimase veeru number„Trükised 16384Debug.Print "Lehe veerud:" & Columns.Count'Printige viimase lahtri aadress„Prindib $ XFD $ 1048576Debug.Print "Lehe viimase lahtri aadress:" & Lahtrid (Rows.Count, Columns.Count) |
Viimati kasutatud rea number veerus
Atribuut END viib teid vahemiku viimase lahtri ja End (xlUp) viib selle lahtri esmakordselt kasutatud lahtrisse.
123 | Hämarda viimane rida nii kaualastRow = Lahtrid (Ridade arv, "A"). Lõpp (xlUp) .Rida |
Viimati kasutatud veeru number reas
123 | Hämarda lastCol nii kaualastCol = Lahtrid (1, Columns.Count). End (xlToLeft). Veerg |
Atribuut END viib teid vahemiku viimase lahtri ja End (xlToLeft) viib teid selle lahtri esimesena kasutatud lahtrisse.
Võite kasutada ka atribuute xlDown ja xlToRight, et navigeerida praeguse lahtri esimestesse alumistesse või parempoolsetesse lahtritesse.
Lahtri omadused
Ühised omadused
Siin on kood tavaliselt kasutatavate lahtri atribuutide kuvamiseks
12345678910111213141516171819202122 | Hämardage rakk vahemikunaMäära lahter = vahemik ("A1")rakk. AktiveeriSilumine. Prindi lahter. Aadress„Prindi $ 1 $Silumine. Prindi lahter. Väärtus"Prindib 456'AadressSilumine. Prindi lahter. Valem'Prindid = SUM (C2: C3)'KommenteeriSilumine. Prindi lahter. Kommentaar. Tekst'StiilSilumine. Prindi lahter. Stiil'Lahtri vormingSilumine. Prindi lahter. DisplayFormat.NumberFormat |
Lahtri font
Lahtri.Font objekt sisaldab lahtri fondi atribuute:
1234567891011121314151617181920 | Hämardage rakk vahemikunaMäära lahter = vahemik ("A1")„Tavaline, kaldkirjas, paks ja paksus kursiiviscell.Font.FontStyle = "Paks kaldkiri"' Sama nagucell.Font.Bold = Tõsicell.Font.Italic = Tõsi'Seadke font kullerilecell.Font.FontStyle = "Kuller"'Määrake fondi värvcell.Font.Color = vbSinine'võicell.Font.Color = RGB (255, 0, 0)'Määrake fondi suuruscell.Font.Size = 20 |
Kopeeri ja kleebi
Kleebi kõik
Vahemikke/lahtreid saab kopeerida ja kleepida ühest kohast teise. Järgmine kood kopeerib kõik allikavahemiku omadused sihtvahemikku (samaväärne CTRL-C ja CTRL-V)
1234567 | 'Lihtne koopiaVahemik ("A1: D20"). KopeeriTöölehed ("Sheet2"). Vahemik ("B10"). Kleebi'või„Kopeeri praeguselt lehelt lehele nimega„ Leht2 ”Vahemik ("A1: D20"). Kopeeri sihtkoht: = Töölehed ("Leht2"). Vahemik ("B10") |
Kleebi spetsiaalne
Allikavahemiku valitud atribuute saab sihtkohta kopeerida, kasutades suvandit PASTESPECIAL:
123 | 'Kleepige vahemik ainult väärtustenaVahemik ("A1: D20"). KopeeriTöölehed ("Sheet2"). Vahemik ("B10"). PasteSpecial Paste: = xlPasteValues |
Siin on suvand Kleebi võimalikud valikud.
12345678910111213 | 'Kleebi eritüübidxlPasteAllxlPasteAllExceptBordersxlPasteAllMergingConditionalFormatsxlPasteAllUsingSourceThemexlPasteColumnWidthsxlPasteCommentsxlPasteFormatsxlPasteFormulasxlPasteFormulasAndNumberFormatsxlPasteValidationxlPasteValuesxlPasteValuesAndNumberFormats |
AutoFit sisu
Ridade ja veergude suurust saab muuta vastavalt sisule, kasutades järgmist koodi:
12345 | „Muutke ridade 1 kuni 5 suurust, et need sobiksid sisugaRidad ("1: 5"). AutoFit„Muutke veergude A suurust B, et need sobiksid sisugaVeerud ("A: B"). AutoFit |
Veel vahemiku näiteid
Soovitatav on GUI kaudu nõutavate toimingute tegemiseks kasutada makrosalvesti. See aitab teil mõista erinevaid võimalusi ja neid kasutada.
Igaühele
Vahemikku kasutades on lihtsam ringi liikuda Igaühele ehitage, nagu allpool näidatud:
123 | Iga vahemiku lahtri kohta ("A1: B100")„Tehke rakuga midagiJärgmine lahter |
Ahela iga iteratsiooni korral määratakse muutujale c üks vahemiku lahter ja selle lahtri jaoks täidetakse laused For. Loop väljub, kui kõik lahtrid on töödeldud.
Sorteeri
Sorteerimine on vahemiku objekti meetod. Vahemikku saate sortida, määrates suvandid vahemikku sortimiseks. Sorteeri. Allolev kood sorteerib veerud A: C lahtri C2 võtme alusel. Sortimisjärjestus võib olla xlTõusev või xlAlanduv. Päis: = xlJah tuleks kasutada, kui esimene rida on päise rida.
12 | Veerud ("A: C"). Sortimisvõti1: = Vahemik ("C2"), _järjekord1: = xlTõusuv, päis: = xlJah |
Leia
Find on ka Range Object meetod. See leiab esimese lahtri, mille sisu vastab otsingukriteeriumidele, ja tagastab lahtri vahemiku objektina. See naaseb Mitte midagi kui vastet pole.
Kasutamine FindNext meetod (või FindPrevious) järgmise (eelmise) esinemise leidmiseks.
Järgmine kood muudab fondi "Arial Black" kõigi vahemiku lahtrite puhul, mis algavad tähega "John":
12345 | Iga c vahemikus ("A1: A100")Kui c Nagu "John*", siisc.Font.Name = "Arial Black"Lõpp KuiJärgmine c |
Järgmine kood asendab kõik vahemikus „Testida” kuni „Läbinud” määratud vahemikus:
12345678910 | Vahemikuga ("a1: a500")Määra c = .Find ("Testimiseks", LookIn: = xlValues)Kui ei, siis pole midagiesimene aadress = c. AadressTehkec.Value = "Läbitud"Määra c = .FindNext (c)Silmus, kui mitte c pole midagi ja c. Aadress esimene aadressLõpp KuiLõpeta |
Oluline on märkida, et FindNext'i kasutamiseks peate määrama vahemiku. Samuti peate esitama peatumistingimuse, vastasel juhul käivitatakse tsükkel igavesti. Tavaliselt salvestatakse esimese leitud lahtri aadress muutujale ja tsükkel peatatakse, kui selle lahtri juurde jõuate. Samuti peate kontrollima juhtumit, kui silmuse peatamiseks midagi ei leita.
Vahemiku aadress
Kasutage valikut Range.Address, et saada aadress A1 -stiilis
123 | MsgBoxi vahemik ("A1: D10"). Aadress'võiSilumine. Prindivahemik ("A1: D10"). Aadress |
Kasutage xlReferenceStyle (vaikimisi xlA1), et saada adresse R1C1 stiilis
123 | MsgBoxi vahemik ("A1: D10"). Aadress (ReferenceStyle: = xlR1C1)'võiSilumine. Prindivahemik ("A1: D10"). Aadress (ReferenceStyle: = xlR1C1) |
See on kasulik, kui tegelete muutujatesse salvestatud vahemikega ja soovite töödelda ainult teatud aadresse.
Vahemik massiivini
Kiirem ja lihtsam on vahemik massiivi üle kanda ja seejärel väärtusi töödelda. Massiivi tuleks kuulutada variandiks, et vältida massiivi vahemiku täitmiseks vajaliku suuruse arvutamist. Massiivi mõõtmed on seatud vastama vahemiku väärtuste arvule.
123456789 | Dim DirArray kui variant'Salvestage massiivi vahemikus olevad väärtusedDirArray = Vahemik ("a1: a5"). Väärtus'Loop väärtuste töötlemiseksIga c kohta DirArraySilumine. Prindi cEdasi |
Massiiv vahemikku
Pärast töötlemist saate massiivi vahemikku tagasi kirjutada. Massiivi kirjutamiseks ülaltoodud näites vahemikku peate määrama vahemiku, mille suurus vastab massiivi elementide arvule.
Kasutage allolevat koodi, et kirjutada massiiv vahemikku D1: D5:
123 | Vahemik ("D1: D5"). Väärtus = DirArrayVahemik ("D1: H1"). Väärtus = Application.Transpose (DirArray) |
Pange tähele, et peate massiivi üle võtma, kui kirjutate selle reale.
Summa vahemik
12 | SumOfRange = Application.WorksheetFunction.Sum (Vahemik ("A1: A10"))Silumine. Printige SumOfRange |
Saate kasutada paljusid Excelis saadaolevaid funktsioone oma VBA -koodis, määrates Application.WorkSheetFunction. enne funktsiooni nime nagu ülaltoodud näites.
Loendusvahemik
1234567 | „Loendage vahemikus olevate rakkudega arvCountOfCells = Application.WorksheetFunction.Count (Vahemik ("A1: A10"))Silumine. Prindi CountOfCells„Loendage tühjade lahtrite arv vahemikusCountOfNonBlankCells = Application.WorksheetFunction.CountA (Vahemik ("A1: A10"))Silumine. Prindi CountOfNonBlankCells |
Kirjutas: Vinamra Chandra