„Excel VBA“ diapazonai ir langeliai

Diapazonai ir ląstelės VBA

„Excel“ skaičiuoklės saugo duomenis ląstelėse. Ląstelės yra išdėstytos eilutėse ir stulpeliuose. Kiekvieną langelį galima atpažinti pagal jo eilutės ir stulpelio susikirtimo tašką (pvz., B3 arba R3C2).

„Excel“ diapazonas reiškia vieną ar daugiau langelių (pvz., A3: B4)

Langelio adresas

A1 žymėjimas

A1 žymėjime langelis nurodomas stulpelio raide (nuo A iki XFD), po kurio eina eilutės numeris (nuo 1 iki 1 048 576).

VBA galite nurodyti bet kurią langelį naudodami Diapazono objektas.

123456789 „Žr. B4 langelį šiuo metu aktyviame lape„MsgBox“ diapazonas („B4“)„Žiūrėkite lapo B4 langelį pavadinimu„ Duomenys “„MsgBox“ darbalapiai („Duomenys“). Diapazonas („B4“)„Žiūrėkite B4 langelį lape, pavadintame„ Duomenys “kitoje OPEN darbo knygojepavadintas „Mano duomenys“„MsgBox“ darbaknygės („Mano duomenys“). Darbo lapai („Duomenys“). Diapazonas („B4“)

R1C1 žymėjimas

R1C1 žymėjime langelis nurodomas R, po kurio eina eilutės numeris, tada raidė „C“, po kurios - stulpelio numeris. pvz., B4 R1C1 žymėjime bus nurodytas R4C2. VBA naudojate Ląstelių objektas naudoti R1C1 žymėjimą:

12 „Žiūrėkite langelį R [6] C [4], ty D6Ląstelės (6, 4) = "D6"

Ląstelių diapazonas

A1 žymėjimas

Norėdami nurodyti daugiau nei vieną langelį, naudokite „:“ tarp pradinio langelio adreso ir paskutinio langelio adreso. Toliau bus nurodytos visos ląstelės nuo A1 iki D10:

1 Diapazonas („A1: D10“)

R1C1 žymėjimas

Norėdami nurodyti daugiau nei vieną langelį, naudokite „“ tarp pradinio langelio adreso ir paskutinio langelio adreso. Toliau bus nurodytos visos ląstelės nuo A1 iki D10:

1 Diapazonas (langeliai (1, 1), langeliai (10, 4))

Rašymas ląstelėms

Norėdami parašyti reikšmes langeliui ar gretimai langelių grupei, paprasčiausiai nurodykite diapazoną, padėkite ženklą = ir parašykite išsaugotiną reikšmę:

12345678910 „Saugokite F5 langelyje su adresu F6Diapazonas ("F6") = "F6"„Saugokite E6 langelyje su adresu R [6] C [5], ty E6Ląstelės (6, 5) = "E6"„Laikykite A1: D10 diapazone A1: D10Diapazonas ("A1: D10") = "A1: D10"“arbaDiapazonas (langeliai (1, 1), langeliai (10, 4)) = "A1: D10"

Skaitymas iš ląstelių

Norėdami skaityti reikšmes iš langelių, paprasčiausiai kreipkitės į kintamąjį, kad išsaugotumėte reikšmes, padėkite = ženklą ir tada nurodykite skaitomą diapazoną:

1234567891011 Dim val1Dim val2„Skaitykite iš langelio F6val1 = Diapazonas ("F6")„Skaitykite iš langelio E6val2 = ląstelės (6, 5)„MsgBox val1“„Msgbox val2“

Pastaba: norėdami išsaugoti reikšmes iš langelių diapazono, turite naudoti masyvą, o ne paprastą kintamąjį.

Ne gretimos ląstelės

Norėdami nurodyti ne gretimas ląsteles, naudokite kablelį tarp langelių adresų:

123456 „Saugokite 10 langeliuose A1, A3 ir A5Diapazonas ("A1, A3, A5") = 10„Saugoti 10 langeliuose A1: A3 ir D1: D3“Diapazonas („A1: A3, D1: D3“) = 10

Ląstelių sankirta

Norėdami nurodyti ne gretimus langelius, naudokite tarpą tarp langelių adresų:

123 „Laikykite„ Col D “D1: D10“, kuris yra įprastas tarp A1: D10 ir D1: F10Diapazonas ("A1: D10 D1: G10") = "Col D"

Poslinkis nuo langelio ar diapazono

Naudodami poslinkio funkciją, galite perkelti nuorodą iš nurodyto diapazono (langelio ar ląstelių grupės) pagal nurodytą skaičių_eilių ir skaičių_stulpelių.

Poslinkio sintaksė

Diapazonas. Poslinkis (eilių skaičius, stulpelių skaičius)

Poslinkis nuo langelio

12345678910111213141516 „NUOSTOLIS iš langelio A1„Kreipkitės į pačią ląstelę„Perkelkite 0 eilučių ir 0 stulpeliųDiapazonas ("A1"). Poslinkis (0, 0) = "A1"„Perkelkite 1 eilutę ir 0 stulpeliųDiapazonas ("A1"). Poslinkis (1, 0) = "A2"„Perkelkite 0 eilučių ir 1 stulpelioDiapazonas ("A1"). Poslinkis (0, 1) = "B1"„Perkelkite 1 eilutę ir 1 stulpelįDiapazonas ("A1"). Poslinkis (1, 1) = "B2"„Perkelkite 10 eilučių ir 5 stulpeliųDiapazonas ("A1"). Poslinkis (10, 5) = "F11"

Nuokrypis nuo diapazono

123 „Perkelkite nuorodą į diapazoną A1: D4 4 eilutėmis ir 4 stulpeliais„Nauja nuoroda yra E5: H8Diapazonas ("A1: D4"). Poslinkis (4,4) = "E5: H8"

Nuorodos į diapazoną nustatymas

Norėdami priskirti diapazoną kintamajam: deklaruokite kintamąjį, kurio tipas yra Range, tada naudokite komandą Set, kad nustatytumėte diapazoną. Atminkite, kad turite naudoti komandą SET, nes RANGE yra objektas:

12345678 „Paskelbkite diapazono kintamąjįDim myRange kaip diapazonas„Nustatykite kintamąjį į diapazoną A1: D4Nustatyti myRange = Diapazonas („A1: D4“)„Spausdina $ A $ 1: $ D $ 4„MsgBox myRange“. Adresas

Pakeiskite diapazono dydį

Diapazono objekto dydžio keitimas pakeičia atskaitos diapazono matmenis:

1234567 Dim myRange As Range„Diapazonas iki dydžio keitimoNustatyti myRange = Diapazonas („A1: F4“)„Spausdina $ A $ 1: $ E $ 10Derinimas. Spausdinti myRange. Dydis (10, 5). Adresas

Keičiamo diapazono viršutinė kairioji ląstelė yra tokia pati kaip pradinio diapazono viršutinė kairioji ląstelė

Pakeiskite sintaksės dydį

Diapazonas. Keisti dydį (eilių skaičius, stulpelių skaičius)

OFFSET vs Resize

Poslinkis nekeičia diapazono matmenų, bet perkelia jį nurodytu eilučių ir stulpelių skaičiumi. Keisti dydį nekeičia pradinio diapazono padėties, bet keičia matmenis iki nurodyto eilučių ir stulpelių skaičiaus.

Visos ląstelės lape

Ląstelių objektas nurodo visas lapo langelius (1048576 eilutės ir 16384 stulpeliai).

12 „Išvalyti visus langelius darbalapiuoseLąstelės. Išvalyti

„UsedRange“

„PropertyRange“ ypatybė suteikia stačiakampį diapazoną nuo naudojamo langelio viršutinėje kairėje iki aktyvaus lapo dešiniojo apatinio langelio.

1234567 Dim ws kaip darbalapisNustatykite ws = ActiveSheet„$ B $ 2: $ L $ 14, jei L2 yra pirmasis langelis su bet kokia verte“, o L14 yra paskutinis langelis su bet kokia reikšme“aktyvus lapasDerinimas. Spausdinti ws. Naudotas diapazonas. Adresas

Dabartinis regionas

„CurrentRegion“ ypatybė suteikia gretimą stačiakampį diapazoną nuo viršutinio kairiojo langelio iki naudojamo dešiniojo apatinio langelio, kuriame yra nurodytas langelis/diapazonas.

1234567891011 Dim myRange As RangeNustatyti myRange = Diapazonas („D4: F6“)„Spausdina $ B $ 2: $ L $ 14„Jei yra užpildytas kelias nuo D4: F16 iki B2 IR L14Derinimas. Spausdinti myRange.CurrentRegion.Address„Taip pat galite nurodyti vieną pradinę ląstelęNustatykite myRange = Range ("D4") 'Spausdina $ B $ 2: $ L $ 14

Diapazono ypatybės

Toliau pateiktame diapazone galite gauti adresą, langelio eilutės/stulpelio numerį ir eilučių/stulpelių skaičių:

123456789101112131415161718192021 Dim myRange As RangeNustatyti myRange = Diapazonas („A1: F10“)„Spausdina $ A $ 1: $ F $ 10Derinimas. Spausdinti myRange. AdresasNustatyti myRange = Diapazonas ("F10")„Spausdina 10 už 10 eilutęDerinimas. Spausdinti myRange.Row„F stulpelio 6 spaudiniaiDerinimas. Spausdinti myRange. StulpelisNustatyti myRange = Diapazonas („E1: F5“)„Spausdina 5 eilučių skaičių diapazoneDerinimas. Spausdinti myRange.Rows.Count„Spausdina 2, nurodydamas diapazono stulpelių skaičiųDerinimas. Spausdinti myRange.Columns.Count

Paskutinė lapo ląstelė

Tu gali naudoti Eilutės. Skaičius ir Stulpeliai. Skaičius savybės su Ląstelės objektą, kad gautumėte paskutinį lapo langelį:

1234567891011 'Atspausdinkite paskutinės eilutės numerį„Spausdina 1048576Debug.Print "Eilutės lape:" & Eilutės.Skaičius„Atspausdinkite paskutinio stulpelio numerį„Spausdina 16384Debug.Print "Stulpeliai lape:" & Columns.Count„Atspausdinkite paskutinio langelio adresą„Spausdina $ XFD $ 1048576Debug.Print "Paskutinio lapo langelio adresas:" ir langeliai (Rows.Count, Columns.Count)

Paskutinis naudojamas eilutės numeris stulpelyje

Ypatybė END perkelia paskutinį diapazono langelį, o pabaiga (xlUp) - pirmą kartą panaudotą langelį iš tos ląstelės.

123 Užtemdyti paskutinę eilutęlastRow = Ląstelės (Rows.Count, "A"). Pabaiga (xlUp) .Row

Paskutinį kartą naudojamas stulpelio numeris eilutėje

123 Dim lastCol As LonglastCol = Ląstelės (1, Columns.Count). End (xlToLeft). Stulpelis

Ypatybė END perkelia paskutinį diapazono langelį, o pabaiga (xlToLeft) nukelia jus į pirmą kartą panaudotą langelį iš tos ląstelės.

Taip pat galite naudoti ypatybes „xlDown“ ir „xlToRight“, kad pereitumėte į pirmą dabartinės ląstelės apačią arba dešinę.

Ląstelių savybės

Bendros savybės

Čia yra kodas, rodantis dažniausiai naudojamas ląstelių ypatybes

12345678910111213141516171819202122 Šviesos langelis kaip diapazonasNustatyti langelį = diapazonas („A1“)ląstelė. AktyvintiDerinimas. Spausdinti langelį. Adresas„Spausdinti 1 USDDerinti. Spausdinti langelį. Vertė456'AdresasDerinimas. Spausdinti langelį. Formulė„Spaudiniai = SUM (C2: C3)'KomentuokDerinti. Spausdinti langelį. Komentuoti. Tekstas'StiliusDerinimas. Spausdinti langelį. Stilius'Ląstelės formatasDerinti. Spausdinti langelį. „DisplayFormat“. „NumberFormat“

Langelio šriftas

Ląstelės šrifto objekte yra langelio šrifto ypatybių:

1234567891011121314151617181920 Šviesos langelis kaip diapazonasNustatyti langelį = diapazonas („A1“)„Įprastas, kursyvas, paryškintas ir paryškintas kursyvascell.Font.FontStyle = "Paryškintas kursyvas"' Taip pat kaipcell.Font.Bold = Tiesaląstelė. Šriftas. Itališkas = tiesa„Nustatykite šriftą į„ Courier “cell.Font.FontStyle = "Kurjeris"'Nustatykite šrifto spalvąląstelė.Šriftas.Spalva = vbBlue“arbaląstelė.Šriftas.Spalva = RGB (255, 0, 0)'Nustatykite šrifto dydįląstelė.Šriftas.Dydis = 20

Kopijuoti ir įklijuoti

Įklijuoti viską

Diapazonus/langelius galima nukopijuoti ir įklijuoti iš vienos vietos į kitą. Šis kodas nukopijuoja visas šaltinio diapazono savybes į paskirties sritį (atitinka CTRL-C ir CTRL-V)

1234567 'Paprasta kopijaDiapazonas („A1: D20“). KopijuotiDarbo lapai („Sheet2“). Diapazonas („B10“). Įklijuoti“arba„Kopijuoti iš dabartinio lapo į lapą pavadinimu„ Sheet2 “Diapazonas („A1: D20“). Kopijuoti paskirties vietą: = darbalapiai („Sheet2“). Diapazonas („B10“)

Įklijuoti specialiai

Pasirinktas šaltinio diapazono ypatybes galima nukopijuoti į paskirties vietą naudojant parinktį PASTESPECIAL:

123 „Įklijuokite diapazoną tik kaip reikšmesDiapazonas („A1: D20“). KopijuotiDarbo lapai („Sheet2“). Diapazonas („B10“). PasteSpecial Paste: = xlPasteValues

Čia pateikiamos galimos parinkties Įklijuoti parinktys:

12345678910111213 „Įklijuokite specialius tipusxlPasteAllxlPasteAllExceptBordersxlPasteAllMergingConditionalFormatsxlPasteAllUsingSourceThemexlPasteColumnWidthsxlPasteCommentsxlPasteFormatsxlPasteFormulasxlPasteFormulasAndNumberFormatsxlPasteValidationxlPasteValuesxlPasteValuesAndNumberFormats

„AutoFit“ turinys

Eilučių ir stulpelių dydį galima pakeisti, kad atitiktų turinį, naudojant toliau pateiktą kodą:

12345 „Pakeiskite 1–5 eilučių dydį, kad tilptų turinysEilutės („1: 5“). „AutoFit“„Pakeiskite A stulpelių į B dydį, kad jie atitiktų turinįStulpeliai („A: B“). Automatinis pritaikymas

Daugiau diapazono pavyzdžių

Rekomenduojama naudoti „Macro Recorder“ atliekant reikiamus veiksmus per GUI. Tai padės suprasti įvairias galimybes ir kaip jas naudoti.

Kiekvienam

Naudojant, lengviau pereiti per diapazoną Kiekvienam statykite taip, kaip parodyta žemiau:

123 Kiekvienam diapazono langeliui („A1: B100“)„Daryk ką nors su ląsteleKitas langelis

Kiekvienos kilpos iteracijos metu viena diapazono ląstelė priskiriama kintamajam c ir sakiniai už ciklą vykdomi šiai ląstelei. Ciklas išeina, kai apdorojamos visos ląstelės.

Rūšiuoti

Rūšiuoti yra diapazono objekto metodas. Galite rūšiuoti diapazoną, nurodydami rūšiavimo į diapazoną parinktis. Toliau pateiktas kodas surūšiuos A: C stulpelius pagal raktą C2 langelyje. Rūšiavimo tvarka gali būti didėjanti arba mažėjanti. Antraštė: = xlTaip reikia naudoti, jei pirmoji eilutė yra antraštės eilutė.

12 Stulpeliai („A: C“). Rūšiavimo raktas1: = Diapazonas („C2“), _tvarka1: = xlAugantis, antraštė: = xlTaip

Rasti

Rasti taip pat yra diapazono objekto metodas. Jis suranda pirmąjį langelį, kurio turinys atitinka paieškos kriterijus, ir grąžina langelį kaip diapazono objektą. Tai grįžta Nieko jei nėra atitikmens.

Naudoti Rasti kitą metodą (arba „FindPrevious“), kad surastumėte kitą (ankstesnį) įvykį.

Šis kodas pakeis šriftą į „Arial Black“ visoms diapazono ląstelėms, prasidedančioms „John“:

12345 Kiekvienam c diapazone („A1: A100“)Jei c Patinka „Jonas*“, tadac.Font.Name = "Arial Black"Pabaiga JeiKitas c

Šis kodas pakeis visus nurodytus intervalus nuo „To Test“ iki „Passed“:

12345678910 Su diapazonu („a1: a500“)Nustatykite c = .Find ("Norėdami išbandyti", LookIn: = xlValues)Jei ne c tai nieko, tadafirstaddress = c. AdresasDarykc.Value = "Išlaikyta"Nustatykite c = .FindNext (c)Ciklas, kol ne c nieko ir c. Adresas pirmas adresasPabaiga JeiPabaiga su

Svarbu pažymėti, kad norėdami naudoti „FindNext“ turite nurodyti diapazoną. Taip pat turite pateikti sustojimo sąlygą, kitaip kilpa veiks amžinai. Paprastai pirmojo rasto langelio adresas saugomas kintamajame ir ciklas sustabdomas, kai vėl pasiekiate tą langelį. Taip pat turite patikrinti atvejį, kai nerandama nieko, kas sustabdytų ciklą.

Diapazono adresas

Naudokite „Range.Address“, kad gautumėte A1 stiliaus adresą

123 „MsgBox“ diapazonas („A1: D10“). Adresas“arbaDebug.Print Range („A1: D10“). Adresas

Naudokite xlReferenceStyle (numatytasis yra xlA1), kad gautumėte adresus R1C1 stiliumi

123 „MsgBox“ diapazonas („A1: D10“). Adresas (ReferenceStyle: = xlR1C1)“arbaDebug.Print Range („A1: D10“). Adresas (ReferenceStyle: = xlR1C1)

Tai naudinga, kai dirbate su kintamuosiuose saugomais diapazonais ir norite apdoroti tik tam tikrus adresus.

Diapazonas iki masyvo

Greičiau ir lengviau perkelti diapazoną į masyvą ir apdoroti reikšmes. Turėtumėte paskelbti masyvą kaip variantą, kad neskaičiuotumėte dydžio, kurio reikia masyvo diapazonui užpildyti. Masyvo matmenys nustatyti taip, kad atitiktų diapazono verčių skaičių.

123456789 „Dim DirArray“ kaip variantas„Išsaugokite masyvo diapazono vertesDirArray = Diapazonas ("a1: a5"). Reikšmė„Kartokite vertesKiekvienam c „DirArray“Derinimas. Spausdinti cKitas

Masyvas į diapazoną

Po apdorojimo galite įrašyti masyvą atgal į diapazoną. Norėdami parašyti masyvą aukščiau pateiktame pavyzdyje į diapazoną, turite nurodyti diapazoną, kurio dydis atitinka masyvo elementų skaičių.

Naudokite žemiau esantį kodą, kad masyvą įrašytumėte į diapazoną D1: D5:

123 Diapazonas ("D1: D5"). Vertė = DirArrayDiapazonas („D1: H1“). Reikšmė = Application.Transpose („DirArray“)

Atminkite, kad turite perkelti masyvą, jei jį rašote eilutėje.

Sumos diapazonas

12 SumOfRange = Application.WorksheetFunction.Sum (Diapazonas („A1: A10“))Derinimas. Spausdinti „SumOfRange“

Galite naudoti daugelį „Excel“ funkcijų savo VBA kode, nurodydami „Application.WorkSheetFunction“. prieš funkcijos pavadinimą, kaip parodyta aukščiau esančiame pavyzdyje.

Skaičiavimo diapazonas

1234567 „Suskaičiuokite ląstelių skaičių su diapazonuCountOfCells = Application.WorksheetFunction.Count (Diapazonas („A1: A10“))Derinti. Spausdinti „CountOfCells“„Suskaičiuokite tuščių ląstelių skaičių diapazoneCountOfNonBlankCells = Application.WorksheetFunction.CountA (Diapazonas („A1: A10“))Derinti. Spausdinti „CountOfNonBlankCells“

Parašė: Vinamra Chandra

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave