Solujen tai alueiden valitseminen Visual Basic -toimintosarjojen avulla Excelissä
Microsoft esittää ohjelmointiesimerkkejä vain asian havainnollistamiseksi, ilman suoraa tai epäsuoraa vastuuta niiden toimivuudesta. Tämä sisältää muunmuassa epäsuorat vastuut soveltuvuudesta kaupankäyntiin tai soveltuvuuteen yksilöityyn käyttöön. Tässä artikkelissa oletetaan, että olet perehtynyt käytettyyn ohjelmointikieleen, sekä proseduurien luonti- ja virheenkorjaustyökaluihin. Microsoftin tukihenkilöt voivat auttaa selvittämään tietyn proseduurin toiminnallisuutta, mutta he eivät muokkaa näitä esimerkkejä parantamaan yksittäisen tarpeen toiminnallisuutta eivätkä luo siihen proseduureja. Tämän artikkelin esimerkeissä käytetään seuraavassa taulukossa lueteltuja Visual Basic -menetelmiä.
Method Arguments
------------------------------------------
Activate none
Cells rowIndex, columnIndex
Application.Goto reference, scroll
Offset rowOffset, columnOffset
Range cell1
cell1, cell2
Resize rowSize, columnSize
Select none
Sheets index (or sheetName)
Workbooks index (or bookName)
End direction
CurrentRegion none
Tämän artikkelin esimerkeissä käytetään seuraavan taulukon ominaisuuksia.
Property Use
---------------------------------------------------------------------
ActiveSheet to specify the active sheet
ActiveWorkbook to specify the active workbook
Columns.Count to count the number of columns in the specified item
Rows.Count to count the number of rows in the specified item
Selection to refer to the currently selected range
Solun valitseminen aktiivisesta laskentataulukosta
Jos haluat valita solun D5 aktiivisesta laskentataulukosta, voit käyttää jompaakumpaa seuraavista esimerkeistä:
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Saman työkirjan toisen laskentataulukon solun valitseminen
Jos haluat valita solun E6 samassa työkirjassa olevassa toisessa laskentataulukossa, voit käyttää jompaakumpaa seuraavista esimerkeistä:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
-or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Voit myös aktivoida laskentataulukon ja valita sitten solun yllä olevalla tavalla 1:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Toisen työkirjan laskentataulukon solun valitseminen
Jos haluat valita solun F7 laskentataulukosta toisessa työkirjassa, voit käyttää jompaakumpaa seuraavista esimerkeistä:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Voit myös aktivoida laskentataulukon ja valita sitten solun yllä olevalla tavalla 1:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
Solualueen valitseminen aktiivisesta laskentataulukosta
Jos haluat valita alueen C2:D10 aktiivisessa laskentataulukossa, voit käyttää mitä tahansa seuraavista esimerkeistä:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select
or
ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select
or, alternatively, it could be simplified to this:
Range(Cells(2, 3), Cells(10, 4)).Select
Solualueen valitseminen samassa työkirjassa olevassa toisessa laskentataulukossa
Jos haluat valita alueen D3:E11 samassa työkirjassa olevassa toisessa laskentataulukossa, voit käyttää jompaakumpaa seuraavista esimerkeistä:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Voit myös aktivoida laskentataulukon ja valita sitten alueen yllä olevalla menetelmällä 4:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Eri työkirjan laskentataulukon solualueen valitseminen
Jos haluat valita alueen E4:F12 laskentataulukossa eri työkirjassa, voit käyttää jompaakumpaa seuraavista esimerkeistä:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Voit myös aktivoida laskentataulukon ja valita sitten alueen yllä olevalla menetelmällä 4:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Nimetyn alueen valitseminen aktiivisesta laskentataulukosta
Jos haluat valita nimetyn alueen "Testaa" aktiivisesta laskentataulukosta, voit käyttää jompaakumpaa seuraavista esimerkeistä:
Range("Test").Select
Application.Goto "Test"
Nimetyn alueen valitseminen samasta työkirjasta toisesta laskentataulukosta
Jos haluat valita saman työkirjan toisen laskentataulukon nimetyn alueen Testaa, voit käyttää seuraavaa esimerkkiä:
Application.Goto Sheets("Sheet1").Range("Test")
Voit myös aktivoida laskentataulukon ja valita sitten nimetyn alueen yllä olevalla menetelmällä 7:
Sheets("Sheet1").Activate
Range("Test").Select
Nimetyn alueen valitseminen laskentataulukosta toisessa työkirjassa
Jos haluat valita toisen työkirjan laskentataulukosta nimetyn alueen "Testaa", voit käyttää seuraavaa esimerkkiä:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Voit myös aktivoida laskentataulukon ja valita sitten nimetyn alueen yllä olevalla menetelmällä 7:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Solun valitseminen suhteessa aktiiviseen soluun
Jos haluat valita solun, joka on viisi riviä alapuolella ja neljä saraketta aktiivisen solun vasemmalla puolella, voit käyttää seuraavaa esimerkkiä:
ActiveCell.Offset(5, -4).Select
Jos haluat valita solun, joka on kaksi riviä yläpuolella ja kolme saraketta aktiivisen solun oikealla puolella, voit käyttää seuraavaa esimerkkiä:
ActiveCell.Offset(-2, 3).Select
Huomautus
Jos yrität valita solun, joka ei ole laskentataulukossa, tapahtuu virhe. Ensimmäinen yllä näkyvä esimerkki palauttaa virheen, jos aktiivinen solu on sarakkeissa A - D, koska neljän sarakkeen siirtäminen vasemmalle vie aktiivisen solun virheelliseen solun osoitteeseen.
Solun valitseminen suhteessa toiseen soluun (ei aktiiviseen) soluun
Jos haluat valita solun, joka on viisi riviä alapuolella ja neljä saraketta solun C7 oikealla puolella, voit käyttää jompaakumpaa seuraavista esimerkeistä:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Solualueen siirtymän valitseminen määritetyltä alueelta
Jos haluat valita solualueen, joka on samankokoinen kuin nimetty alue "Testi", mutta joka on siirretty neljä riviä alas ja kolme saraketta oikealle, voit käyttää seuraavaa esimerkkiä:
ActiveSheet.Range("Test").Offset(4, 3).Select
Jos nimetty alue on toisessa (ei aktiivisessa) laskentataulukossa, aktivoi ensin kyseinen laskentataulukko ja valitse sitten alue seuraavan esimerkin avulla:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Määritetyn alueen valitseminen ja valinnan koon muuttaminen
Jos haluat valita nimetyn alueen "Tietokanta" ja laajentaa sitten valintaa viidellä rivillä, voit käyttää seuraavaa esimerkkiä:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Tietyn alueen valitseminen, siirtymä ja koon muuttaminen
Jos haluat valita alueen neljä riviä alapuolelta ja kolme saraketta nimetyn tietokannan oikealla puolella ja sisältää kaksi riviä ja yhden sarakkeen, jotka ovat enemmän kuin nimetty alue, voit käyttää seuraavaa esimerkkiä:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
Kahden tai useamman määritetyn alueen yhdistäminen
Jos haluat valita kahden nimetyn alueen "Testi" ja "Malli" yhdistelmän (eli yhdistetyn alueen), voit käyttää seuraavaa esimerkkiä:
Application.Union(Range("Test"), Range("Sample")).Select
Huomautus
että molempien alueiden on oltava samassa laskentataulukossa, jotta tämä esimerkki toimisi. Huomaa myös, että Union-menetelmä ei toimi kaikissa taulukoissa. Esimerkiksi tämä rivi toimii hyvin.
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
mutta tämä viiva
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
palauttaa virhesanoman:
Sovellusluokan yhdistämismenetelmä epäonnistui
Kahden tai useamman määritetyn alueen leikkauskohdan valitseminen
Jos haluat valita kahden nimetyn alueen "Testi" ja "Malli" leikkauskohdan, voit käyttää seuraavaa esimerkkiä:
Application.Intersect(Range("Test"), Range("Sample")).Select
Huomaa, että molempien alueiden on oltava samassa laskentataulukossa, jotta tämä esimerkki toimisi.
Tämän artikkelin esimerkit 17–21 viittaavat seuraavaan tietojoukkoon. Kussakin esimerkissä määritetään valittujen mallitietojen solualue.
A1: Name B1: Sales C1: Quantity
A2: a B2: $10 C2: 5
A3: b B3: C3: 10
A4: c B4: $10 C4: 5
A5: B5: C5:
A6: Total B6: $20 C6: 20
Yhtenäisen tietosarakkeen viimeisen solun valitseminen
Jos haluat valita yhtenäisen sarakkeen viimeisen solun, käytä seuraavaa esimerkkiä:
ActiveSheet.Range("a1").End(xlDown).Select
Kun tätä koodia käytetään mallitaulukossa, valitaan solu A4.
Tyhjän solun valitseminen yhtenäisen tietosarakkeen alareunasta
Jos haluat valita yhtenäisen solualueen alapuolella olevan solun, käytä seuraavaa esimerkkiä:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Kun tätä koodia käytetään mallitaulukossa, valitaan solu A5.
Koko yhtenäisen solualueen valitseminen sarakkeesta
Jos haluat valita sarakkeesta yhtenäisen solualueen, käytä jotakin seuraavista esimerkeistä:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Kun tätä koodia käytetään mallitaulukon kanssa, valitaan solut A1–A4.
Koko ei-yhtenäisen solualueen valitseminen sarakkeesta
Jos haluat valita solualueen, joka ei ole jatkuva, käytä jotakin seuraavista esimerkeistä:
ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
End(xlUp).Address).Select
Kun tätä koodia käytetään mallitaulukon kanssa, se valitsee solut A1–A6.
Suorakulmaisen solualueen valitseminen
Jos haluat valita solun ympärillä olevan suorakulmaisen solualueen, käytä CurrentRegion-menetelmää. CurrentRegion-menetelmän valitsema alue on alue, joka on sidottu tyhjien rivien ja tyhjien sarakkeiden yhdistelmällä. Seuraavassa on esimerkki CurrentRegion-menetelmän käytöstä:
ActiveSheet.Range("a1").CurrentRegion.Select
Tämä koodi valitsee solut A1–C4. Alla on lueteltu muita esimerkkejä saman solualueen valitsemisesta:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
-or-
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
Joissakin tapauksissa saatat haluta valita soluja A1 – C6. Tässä esimerkissä CurrentRegion-menetelmä ei toimi rivillä 5 olevan tyhjän rivin vuoksi. Seuraavissa esimerkeissä valitaan kaikki solut:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
-or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select
Useiden ei-peräkkäinen, vaihtelevan pituisten sarakkeiden valitseminen
Jos haluat valita useita ei-peräkkäinen, vaihtelevan pituisia sarakkeita, käytä seuraavaa esimerkkitaulukkoa ja makroesimerkkiä:
A1: 1 B1: 1 C1: 1 D1: 1
A2: 2 B2: 2 C2: 2 D2: 2
A3: 3 B3: 3 C3: 3 D3: 3
A4: B4: 4 C4: 4 D4: 4
A5: B5: 5 C5: 5 D5:
A6: B6: C6: 6 D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
Kun tätä koodia käytetään mallitaulukossa, valitaan solut A1:A3 ja C1:C6.
Huomautuksia esimerkeistä
ActiveSheet-ominaisuus voidaan yleensä jättää pois, koska se on implisiittinen, jos tiettyä taulukkoa ei nimetä. Esimerkiksi sen sijaan, että
ActiveSheet.Range("D5").Select
voit käyttää seuraavaa:
Range("D5").Select
ActiveWorkbook-ominaisuus voidaan myös yleensä jättää pois. Jos tiettyä työkirjaa ei nimetä, aktiivisessa työkirjassa ei mainita mitään.
Kun käytät Application.Goto-menetelmää ja haluat käyttää kahta Solut-menetelmää Alue-menetelmässä, kun määritetty alue on toisessa laskentataulukossa (ei aktiivinen), Taulukko-objekti on sisällytettävä joka kerta. Esimerkiksi:
With ActiveWorkbook.Sheets("Sheet1")
Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
End With
Voit käyttää muuttujaa, jonka arvo on tekstimerkkijono mille tahansa kohteelle lainausmerkeissä (esimerkiksi nimetty alue "Testi"). Esimerkiksi sen sijaan, että
ActiveWorkbook.Sheets("Sheet1").Activate
voit käyttää
ActiveWorkbook.Sheets(myVar).Activate
jossa myVar-arvo on "Taul1".