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".