Exceli VBA vahemikud ja lahtrid

Lang L: none (table-of-contents)

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

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave