Excel VBA -alueet ja solut

Alueet ja solut VBA: ssa

Excel -laskentataulukot tallentavat tiedot soluihin. Solut on järjestetty riveiksi ja sarakkeiksi. Jokainen solu voidaan tunnistaa rivin ja sarakkeen leikkauspisteestä (esim. B3 tai R3C2).

Excel -alue viittaa yhteen tai useampaan soluun (esim. A3: B4)

Solun osoite

A1 Merkintä

A1 -merkinnässä soluun viitataan sen sarakkeen kirjaimella (A: sta XFD: hen) ja sen jälkeen rivinumerolla (1 - 1 048 576).

VBA: ssa voit viitata mihin tahansa soluun käyttämällä Alueobjekti.

123456789 'Katso aktiivisen taulukon solua B4MsgBox -alue ("B4")'' Katso solun B4 taulukossa nimeltä 'Data'MsgBox -laskentataulukot ("Data"). Alue ("B4")'Katso toisen OPEN -työkirjan Data -taulukon solua B4'nimeltään' My Data 'MsgBox -työkirjat ("Omat tiedot"). Laskentataulukot ("Data"). Alue ("B4")

R1C1 -merkintä

R1C1 -merkinnässä soluun viitataan R, jota seuraa rivin numero, sitten kirjain "C" ja sarakkeen numero. esim. B4 R1C1 -merkinnöissä viitataan R4C2: lla. VBA: ssa käytät Solut -objekti käyttää R1C1 -merkintätapaa:

12 'Katso solu R [6] C [4] eli D6Solut (6, 4) = "D6"

Solualue

A1 Merkintä

Jos haluat viitata useampaan kuin yhteen soluun, käytä ":" -merkkiä alkavan solun osoitteen ja viimeisen soluosoitteen välillä. Seuraavassa viitataan kaikkiin soluihin A1 - D10:

1 Alue ("A1: D10")

R1C1 -merkintä

Jos haluat viitata useampaan kuin yhteen soluun, käytä ”,” solun aloitusosoitteen ja viimeisen solun osoitteen välissä. Seuraavassa viitataan kaikkiin soluihin A1 - D10:

1 Alue (Solut (1, 1), Solut (10, 4))

Kirjoittaminen soluille

Jos haluat kirjoittaa arvoja solulle tai viereiselle soluryhmälle, katso vain alue, kirjoita = -merkki ja kirjoita sitten tallennettava arvo:

12345678910 'Tallenna F5 soluun osoitteella F6Alue ("F6") = "F6"'Tallenna E6 soluun osoitteella R [6] C [5] eli E6Solut (6, 5) = "E6"'Säilytä A1: D10 alueella A1: D10Alue ("A1: D10") = "A1: D10"'taiAlue (solut (1, 1), solut (10, 4)) = "A1: D10"

Lukeminen soluista

Jos haluat lukea arvoja soluista, katso muuttuja tallentaaksesi arvot, kirjoita = -merkki ja viittaa sitten luettavaan alueeseen:

1234567891011 Himmennys 1Dim val2"Lue solusta F6val1 = Alue ("F6")"Lue solusta E6val2 = Solut (6, 5)MsgBox val1Msgbox val2

Huomautus: Jos haluat tallentaa arvoja solualueelta, sinun on käytettävä taulukkoa yksinkertaisen muuttujan sijasta.

Ei -vierekkäiset solut

Jos haluat viitata muihin vierekkäisiin soluihin, käytä pilkkua soluosoitteiden välillä:

123456 'Säilytä 10 soluissa A1, A3 ja A5Alue ("A1, A3, A5") = 10'Säilytä 10 soluissa A1: A3 ja D1: D3)Alue ("A1: A3, D1: D3") = 10

Solujen leikkaus

Jos haluat viitata muihin vierekkäisiin soluihin, käytä soluosoitteiden välissä välilyöntiä:

123 'Säilytä' Col D 'kohdassa D1: D10'joka on yleinen A1: D10: n ja D1: F10: n välilläAlue ("A1: D10 D1: G10") = "Col D"

Siirtymä solusta tai alueesta

Siirtymätoiminnon avulla voit siirtää viitettä tietystä alueesta (solu tai soluryhmä) määritetyllä rivinumerolla_ ja sarakkeilla.

Siirtymän syntaksi

Välialue.Siirto (rivien_numero, sarakkeiden_luku)

Siirtymä solusta

12345678910111213141516 'SIIRTO solusta A1'Katso itse solua'Siirrä 0 riviä ja 0 sarakettaAlue ("A1"). Siirtymä (0, 0) = "A1"'Siirrä 1 riviä ja 0 sarakettaAlue ("A1"). Siirtymä (1, 0) = "A2"'Siirrä 0 riviä ja 1 sarakettaAlue ("A1"). Siirtymä (0, 1) = "B1"'Siirrä 1 riviä ja 1 sarakettaAlue ("A1"). Siirtymä (1, 1) = "B2"'Siirrä 10 riviä ja 5 sarakettaAlue ("A1"). Siirtymä (10, 5) = "F11"

Siirtymä alueelta

123 'Siirrä viittaus alueeseen A1: D4 4 rivillä ja 4 sarakkeella'Uusi viite on E5: H8Alue ("A1: D4"). Siirtymä (4,4) = "E5: H8"

Viittauksen asettaminen alueelle

Alueen määrittäminen aluemuuttujalle: ilmoita Range -tyyppinen muuttuja ja aseta se sitten Set -komennolla alueeksi. Huomaa, että sinun on käytettävä SET -komentoa, koska RANGE on objekti:

12345678 'Ilmoita alue muuttujaDim myRange kuin alue'Aseta muuttuja alueelle A1: D4Aseta myRange = Range ("A1: D4")'Tulostaa $ A $ 1: $ D $ 4MsgBox myRange.Address

Muuta alueen kokoa

Range -objektin koon muuttamismenetelmä muuttaa viitealueen mittaa:

1234567 Dim myRange as Range'Alue koon muuttamiseenAseta myRange = Range ("A1: F4")'Tulostaa $ A $ 1: $ E $ 10Virheenkorjaus Tulosta myRange.Resize (10, 5) Osoite

Resized-alueen vasen yläsolu on sama kuin alkuperäisen alueen vasen yläsolu

Muuta syntaksin kokoa

Alue.Koko (rivien_numero, sarakkeiden_määrä)

OFFSET vs koon muuttaminen

Siirtymä ei muuta alueen mittoja, mutta siirtää sitä määritetyllä määrällä rivejä ja sarakkeita. Muuta kokoa ei muuta alkuperäisen alueen sijaintia, mutta muuttaa mitat määritetyksi rivien ja sarakkeiden lukumääräksi.

Kaikki solut taulukossa

Solut -objekti viittaa kaikkiin taulukon soluihin (1048576 riviä ja 16384 saraketta).

12 'Tyhjennä kaikki laskentataulukoiden solutSolut Kirkas

Käytetty alue

UsedRange-ominaisuus antaa sinulle suorakulmaisen alueen vasemman yläkulman käytetystä solusta aktiivisen taulukon oikean alareunan käytettyyn soluun.

1234567 Dim ws laskentataulukkonaAseta ws = ActiveSheet'$ B $ 2: $ L $ 14, jos L2 on ensimmäinen solu, jolla on jokin arvo'ja L14 on viimeinen solu, jolla on arvo'aktiivinen arkkiDebug.Print ws.UsedRange.Address

Nykyinen alue

CurrentRegion-ominaisuus antaa sinulle vierekkäisen suorakulmaisen alueen vasemmasta yläkulmasta soluun/oikeaan alhaalta käytettyyn soluun, joka sisältää viitatun solun/alueen.

1234567891011 Dim myRange as RangeAseta myRange = Range ("D4: F6")'Tulostaa $ B $ 2: $ L $ 14'Jos D4: F16 - B2 ja L14 on täytetty polkuDebug.Tulosta myRange.CurrentRegion.Address'Voit myös viitata yhteen aloitussoluunAseta myRange = Range ("D4") 'Tulostaa $ B $ 2: $ L $ 14

Alueen ominaisuudet

Voit saada osoitteen, solun rivi-/sarakenumeron ja rivien/sarakkeiden määrän seuraavalla alueella:

123456789101112131415161718192021 Dim myRange as RangeAseta myRange = Range ("A1: F10")'Tulostaa $ A $ 1: $ F $ 10Virheenkorjaus Tulosta myRange.AddressAseta myRange = Range ("F10")'Tulostaa 10 riville 10Virheenkorjaus Tulosta myRange.Row'Tuloste 6 sarakkeelle FVirheenkorjaus Tulosta myRange.ColumnAseta myRange = Range ("E1: F5")'Tulostaa 5 alueen rivien lukumäärälleVirheenkorjaus Tulosta myRange.Rows.Count'Tulostaa 2 alueen sarakkeiden lukumäärälleVirheenkorjaus Tulosta myRange.Columns.Count

Arkin viimeinen solu

Voit käyttää Rivit ja Sarakkeet kiinteistöt kanssa Solut objekti saadaksesi taulukon viimeisen solun:

1234567891011 'Tulosta viimeisen rivin numeroTulostaa 1048576Debug.Print "Arkin rivit:" & Rows.Count'Tulosta viimeisen sarakkeen numero"Tuloste 16384Debug.Print "Taulukon sarakkeet:" & Columns.Count'Tulosta viimeisen solun osoite'Tulostaa $ XFD $ 1048576Debug.Print "Arkin viimeisen solun osoite:" & Solut (Rows.Count, Columns.Count)

Viimeksi käytetty rivinumero sarakkeessa

END -ominaisuus vie alueen viimeisen solun, ja End (xlUp) vie sinut ensimmäiseen käytettyyn soluun kyseisestä solusta.

123 Himmennä viimeinen rivi niin kauanlastRow = Solut (Rivid.Count, "A"). End (xlUp) .Row

Viimeksi käytetty sarakkeen numero rivillä

123 Himmennä lastCol Niin kauanlastCol = Solut (1, Columns.Count) .End (xlToLeft) .Column

END -ominaisuus vie alueen viimeisen solun ja End (xlToLeft) vie sinut vasemmalle kyseisen solun ensimmäiseen käytettyyn soluun.

Voit myös käyttää xlDown- ja xlToRight -ominaisuuksia navigoidaksesi nykyisen solun ensimmäiseen ala- tai oikeaan soluun.

Solun ominaisuudet

Yhteiset ominaisuudet

Tässä on koodi yleisesti käytettyjen solun ominaisuuksien näyttämiseksi

12345678910111213141516171819202122 Himmennä solu alueenaAseta solu = alue ("A1")aktivoiVirheenkorjaus Tulosta solu Osoite'Tulosta $ 1 $Virheenkorjaus. Tulosta solu. Arvo"Tulostaa 456'OsoiteVirheenkorjaus Tulosta solu Kaava'Tulosteet = SUMMA (C2: C3)'KommentoiDebug.Print cell.Comment.Text'TyyliVirheenkorjaus Tulosta solu Tyyli'SolumuotoDebug.Tulosta solu.DisplayFormat.NumberFormat

Solun fontti

Cell.Font -objekti sisältää Solun fontin ominaisuuksia:

1234567891011121314151617181920 Himmennä solu alueenaAseta solu = alue ("A1")'Tavallinen, kursivoitu, lihavoitu ja lihavoitu kursivoitucell.Font.FontStyle = "Lihavoitu kursiivi"' Sama kuincell.Font.Bold = Tottacell.Font.Italic = Totta'Aseta fontiksi Couriercell.Font.FontStyle = "Kuriiri"'Aseta kirjasimen väricell.Font.Color = vbBlue'taicell.Font.Color = RGB (255, 0, 0)'Aseta kirjasinkokocell.Font.Size = 20

Kopioi ja liitä

Liitä kaikki

Alueita/soluja voidaan kopioida ja liittää paikasta toiseen. Seuraava koodi kopioi kaikki lähdealueen ominaisuudet kohdealueelle (vastaa CTRL-C ja CTRL-V)

1234567 'Yksinkertainen kopioAlue ("A1: D20"). KopioiLaskentataulukot ("Sheet2"). Alue ("B10"). Liitä'taiKopioi nykyisestä taulukosta taulukkoon nimeltä Sheet2Alue ("A1: D20"). Kopiointikohde: = laskentataulukot ("Taulukko2"). Alue ("B10")

Liitä erityinen

Lähdealueen valitut ominaisuudet voidaan kopioida kohteeseen käyttämällä PASTESPECIAL -vaihtoehtoa:

123 Liitä alue vain arvoiksiAlue ("A1: D20"). KopioiLaskentataulukot ("Sheet2"). Alue ("B10"). PasteSpecial Paste: = xlPasteValues

Tässä on mahdolliset liitäntävaihtoehdot:

12345678910111213 'Liitä erikoistyypitxlPasteAllxlPasteAllExceptBordersxlPasteAllMergingConditionalFormatsxlPasteAllUsingSourceThemexlPasteColumnWidthsxlPasteCommentsxlPasteFormatsxlPasteFormulasxlPasteFormulasAndNumberFormatsxlPasteValidationxlPasteValuesxlPasteValuesAndNumberFormats

AutoFit -sisältö

Rivien ja sarakkeiden kokoa voidaan muuttaa sopimaan sisältöön alla olevan koodin avulla:

12345 'Muuta rivien 1-5 kokoa sisällön mukaanRivit ("1: 5"). AutoFitMuuta sarakkeiden A ja B kokoa sisällön mukaiseksiSarakkeet ("A: B"). Automaattinen sovitus

Lisää alueesimerkkejä

On suositeltavaa käyttää Makrotallenninta, kun suoritat vaaditut toimenpiteet graafisen käyttöliittymän kautta. Se auttaa sinua ymmärtämään erilaisia ​​vaihtoehtoja ja niiden käyttöä.

Jokaiselle

On helpompaa kiertää alue käyttämällä Jokaiselle rakentaa alla olevan kuvan mukaisesti:

123 Jokaiselle alueen solulle ("A1: B100")'Tee jotain solun kanssaSeuraava solu

Jokaisella silmukan iteroinnilla yksi alueen solu osoitetaan muuttujalle c ja For -silmukan käskyt suoritetaan kyseiselle solulle. Silmukka poistuu, kun kaikki solut käsitellään.

Järjestellä

Lajittelu on Range -objektin menetelmä. Voit lajitella alueen määrittämällä lajitteluvaihtoehdot alueeseen. Alla oleva koodi lajittelee sarakkeet A: C solun C2 avaimen perusteella. Lajittelujärjestys voi olla xlAscendating tai xlDescending. Otsikko: = xlKyllä tulee käyttää, jos ensimmäinen rivi on otsikkorivi.

12 Sarakkeet ("A: C"). Lajittelunäppäin1: = Alue ("C2"), _järjestys1: = xl Kasvava, otsikko: = xlKyllä

löytö

Find on myös Range Object -menetelmä. Se löytää ensimmäisen solun, jonka sisältö vastaa hakuehtoja, ja palauttaa solun alueobjektina. Se palaa Ei mitään jos ottelua ei ole.

Käyttää FindNext menetelmä (tai FindPrevious) löytääksesi seuraavan (edellisen) tapahtuman.

Seuraava koodi muuttaa kirjasimen arvoksi "Arial Black" kaikille alueen soluille, jotka alkavat "John":

12345 Jokaista c alueella ("A1: A100")Jos c Kuten "John*" niinc.Font.Name = "Arial Black"Loppu JosSeuraava c

Seuraava koodi korvaa kaikki esiintymät kohdasta "testattava" tilaan "hyväksytty" määritetyllä alueella:

12345678910 Alueella ("a1: a500")Aseta c = .Find ("Testaa", LookIn: = xlValues)Jos ei c ei ole sitten mitäänfirstaddress = c.OdressTehdäc.Value = "Hyväksytty"Aseta c = .FindNext (c)Silmukka kun ei c ei ole mitään ja c.osoite ensimmäinen osoiteLoppu JosLopeta

On tärkeää huomata, että sinun on määritettävä alue FindNextin käyttämiseksi. Sinun on myös annettava pysäytystila, muuten silmukka suoritetaan ikuisesti. Normaalisti ensimmäisen löydetyn solun osoite tallennetaan muuttujaan ja silmukka pysäytetään, kun saavutat solun uudelleen. Sinun on myös tarkistettava tapaus, kun mitään ei löydy silmukan pysäyttämiseksi.

Alueen osoite

Käytä Range.Address -osoitetta saadaksesi A1 -tyylisen osoitteen

123 MsgBox -alue ("A1: D10"). Osoite'taiDebug.Print Range ("A1: D10"). Osoite

Käytä xlReferenceStyle (oletusarvo xlA1) saadaksesi osoitteita R1C1 -tyyliin

123 MsgBox -alue ("A1: D10"). Osoite (ReferenceStyle: = xlR1C1)'taiDebug.Print Range ("A1: D10"). Osoite (ReferenceStyle: = xlR1C1)

Tästä on hyötyä, kun käsittelet muuttujiin tallennettuja alueita ja haluat käsitellä vain tiettyjä osoitteita.

Alue Array

On nopeampaa ja helpompaa siirtää alue taulukkoon ja käsitellä sitten arvot. Sinun on ilmoitettava taulukko vaihtoehdoksi, jotta vältät taulukon alueen täyttämiseen tarvittavan koon laskemisen. Taulukon mitat on asetettu vastaamaan alueen arvojen määrää.

123456789 Dim DirArray vaihtoehtoina'Tallenna alueen arvot taulukkoonDirArray = Alue ("a1: a5"). Arvo'Suorita arvojen käsittelyJokaiselle c In DirArrayVirheenkorjaus Tulosta cSeuraava

Array Rangeen

Käsittelyn jälkeen voit kirjoittaa taulukon takaisin alueelle. Jos haluat kirjoittaa taulukon yllä olevassa esimerkissä alueelle, sinun on määritettävä alue, jonka koko vastaa taulukon elementtien määrää.

Kirjoita taulukko alueelle D1: D5 alla olevan koodin avulla:

123 Alue ("D1: D5"). Arvo = DirArrayAlue ("D1: H1"). Arvo = Application.Transpose (DirArray)

Huomaa, että sinun on transponoitava taulukko, jos kirjoitat sen riville.

Summa -alue

12 SumOfRange = Application.WorksheetFunction.Sum (Alue ("A1: A10"))Debug. Tulosta SumOfRange

Voit käyttää monia Excelin toimintoja VBA -koodissasi määrittämällä Application.WorkSheetFunction. ennen toiminnon nimeä kuten yllä olevassa esimerkissä.

Laske alue

1234567 'Laske solujen lukumäärä alueellaCountOfCells = Application.WorksheetFunction.Count (Alue ("A1: A10"))Debug. Tulosta CountOfCells'Laske ei -tyhjien solujen määrä alueellaCountOfNonBlankCells = Application.WorksheetFunction.CountA (Alue ("A1: A10"))Debug.Print CountOfNonBlankCells

Käsikirjoitus: Vinamra Chandra

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave