Cellák/tartományok kijelölése Visual Basic-eljárásokkal az Excelben

A Microsoft csak szemléltetési célból ad közre programozási példákat, és azokra sem közvetlen, sem közvetett jótállást nem vállal. Ebbe beleértendő a forgalomba hozhatóságra és az adott célra való megfelelőségre vonatkozó jótállás is. A cikk feltételezi, hogy az olvasó jártas a szemléltetésre szolgáló programozási nyelvben, valamint az eljárások létrehozására és a velük kapcsolatos hibakeresésre szolgáló eszközök használatában. A Microsoft támogatási szakemberei segítséget nyújthatnak egy-egy adott eljárás funkcionalitásának megértésében, de funkcionalitásbővítési célból nem módosítják a példákat, és nem készítenek az egyéni igényeknek megfelelő eljárásokat. A cikkben szereplő példák az alábbi táblázatban felsorolt Visual Basic metódusokat használják.

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

A cikkben szereplő példák az alábbi táblázatban szereplő tulajdonságokat használják.

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

Cella kijelölése az aktív munkalapon

Az aktív munkalap D5 celláját az alábbi példák egyikével jelölheti ki:

ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select

Cella kijelölése ugyanabban a munkafüzetben egy másik munkalapon

Ha az E6 cellát ugyanannak a munkafüzetnek egy másik munkalapján szeretné kijelölni, használja az alábbi példák egyikét:

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

Vagy aktiválhatja a munkalapot, majd a fenti 1. módszerrel kijelölheti a cellát:

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

Cella kijelölése egy másik munkafüzet munkalapján

Ha egy másik munkafüzet munkalapján az F7 cellát szeretné kijelölni, használja az alábbi példák egyikét:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

Vagy aktiválhatja a munkalapot, majd a fenti 1. módszerrel kijelölheti a cellát:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

Cellatartomány kijelölése az aktív munkalapon

Az aktív munkalap C2:D10 tartományának kijelöléséhez az alábbi példák bármelyikét használhatja:

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

Cellatartomány kijelölése ugyanazon munkafüzet egy másik munkalapján

Ha a D3:E11 tartományt ugyanazon munkafüzet egy másik munkalapján szeretné kijelölni, használja az alábbi példák egyikét:

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

Vagy aktiválhatja a munkalapot, majd a fenti 4. módszerrel kiválaszthatja a tartományt:

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

Cellatartomány kijelölése egy másik munkafüzet munkalapján

Ha egy másik munkafüzet munkalapján az E4:F12 tartományt szeretné kijelölni, használja az alábbi példák egyikét:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

Vagy aktiválhatja a munkalapot, majd a fenti 4. módszerrel kiválaszthatja a tartományt:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

Elnevezett tartomány kiválasztása az aktív munkalapon

Az aktív munkalapon a "Teszt" nevű tartomány kiválasztásához használhatja az alábbi példák egyikét:

Range("Test").Select
Application.Goto "Test"

Elnevezett tartomány kijelölése ugyanazon munkafüzet egy másik munkalapján

Ha ki szeretné jelölni a "Teszt" elnevezett tartományt ugyanazon munkafüzet egy másik munkalapján, használhatja az alábbi példát:

Application.Goto Sheets("Sheet1").Range("Test")

Vagy aktiválhatja a munkalapot, majd a fenti 7. módszerrel kiválaszthatja a megnevezett tartományt:

Sheets("Sheet1").Activate
Range("Test").Select

Elnevezett tartomány kijelölése egy másik munkafüzet munkalapján

Ha egy másik munkafüzet munkalapján a "Teszt" nevű tartományt szeretné kijelölni, használja az alábbi példát:

Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

Vagy aktiválhatja a munkalapot, majd a fenti 7. módszerrel kiválaszthatja a megnevezett tartományt:

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

Cella kijelölése az aktív cellához viszonyítva

Ha olyan cellát szeretne kijelölni, amely öt sor alatt és négy oszloppal az aktív cella bal oldalán található, használja az alábbi példát:

ActiveCell.Offset(5, -4).Select

Ha olyan cellát szeretne kijelölni, amely az aktív cella fölött két sor, az aktív cella jobb oldalán pedig három oszloppal jobbra található, használja az alábbi példát:

ActiveCell.Offset(-2, 3).Select

Megjegyzés

Hiba történik, ha olyan cellát próbál kijelölni, amely "ki van jelölve a munkalapon". A fenti első példa hibát ad vissza, ha az aktív cella az A–D oszlopban van, mivel négy oszlop balra mozgatása esetén az aktív cella érvénytelen cellacímre kerül.

Cella kijelölése egy másikhoz (nem az aktív) viszonyítási ponthoz viszonyítva

Ha olyan cellát szeretne kijelölni, amely öt sor alatt és négy oszloppal a C7 cella jobb oldalán található, az alábbi példák egyikét használhatja:

ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

Cellatartomány kijelölése adott tartományból eltolva

Ha olyan cellatartományt szeretne kijelölni, amely ugyanolyan méretű, mint a "Teszt" nevű tartomány, de négy sornyit lefelé és három oszlopot jobbra tol el, használhatja az alábbi példát:

ActiveSheet.Range("Test").Offset(4, 3).Select

Ha a névvel ellátott tartomány egy másik (nem aktív) munkalapon található, először aktiválja a munkalapot, majd jelölje ki a tartományt az alábbi példával:

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

Adott tartomány kijelölése és a kijelölés átméretezése

Az "Adatbázis" névvel ellátott tartomány kiválasztásához, majd a kijelölés öt sorral való kiterjesztéséhez használja az alábbi példát:

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

Megadott tartomány kijelölése, eltolása, majd átméretezése

Ha négy sornyit szeretne kijelölni az "Adatbázis" névvel ellátott tartománytól jobbra, és két sort és egy oszlopot szeretne a névvel ellátott tartománynál többre felvenni, használja az alábbi példát:

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

Két vagy több megadott tartomány uniójának kiválasztása

A "Teszt" és a "Minta" nevű két tartomány egyesítésének (vagyis az egyesített területnek) kiválasztásához használhatja az alábbi példát:

Application.Union(Range("Test"), Range("Sample")).Select

Megjegyzés

hogy mindkét tartománynak ugyanazon a munkalapon kell lennie ahhoz, hogy ez a példa működjön. Vegye figyelembe azt is, hogy az Union metódus nem működik a lapok között. Ez a sor például jól működik.

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

de ez a sor

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

A a következő hibaüzenetet adja vissza:

Az alkalmazásosztály union metódusa nem sikerült

Két vagy több megadott tartomány metszetének kiválasztása

A "Teszt" és a "Minta" nevű két tartomány metszetének kiválasztásához használja az alábbi példát:

Application.Intersect(Range("Test"), Range("Sample")).Select

Vegye figyelembe, hogy mindkét tartománynak ugyanazon a munkalapon kell lennie ahhoz, hogy ez a példa működjön.

A cikk 17–21. példái az alábbi mintaadatkészletre vonatkoznak. Minden példa a kijelölendő mintaadatok cellatartományát jeleníti meg.

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

Folytonos adatokból álló oszlop utolsó cellájának kijelölése

Ha egy folytonos oszlop utolsó celláját szeretné kijelölni, használja az alábbi példát:

ActiveSheet.Range("a1").End(xlDown).Select

Ha ezt a kódot használja a mintatáblával, a program kijelöli az A4 cellát.

A folytonos adatok oszlopának alján lévő üres cella kijelölése

Ha egy folytonos cellatartomány alatti cellát szeretne kijelölni, használja az alábbi példát:

ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select

Ha ezt a kódot használja a mintatáblával, a program kijelöli az A5 cellát.

Egy oszlop folytonos celláinak teljes tartományának kijelölése

Ha egy oszlopban egy összefüggő cellatartományt szeretne kijelölni, használja az alábbi példák egyikét:

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select

Ha ezt a kódot használja a mintatáblával, az A1–A4 cellák lesznek kijelölve.

Nem folytonos cellák teljes tartományának kijelölése egy oszlopban

Ha nem folytonos cellatartományt szeretne kijelölni, használja az alábbi példák egyikét:

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

Ha ezt a kódot használja a mintatáblával, akkor az A1–A6 cellákat fogja kijelölni.

Téglalap alakú cellatartomány kijelölése

Ha egy cella körül téglalap alakú cellatartományt szeretne kijelölni, használja a CurrentRegion metódust. Az CurrentRegion metódus által kiválasztott tartomány üres sorok és üres oszlopok tetszőleges kombinációja által határolt terület. Az alábbi példa a CurrentRegion metódus használatát mutatja be:

ActiveSheet.Range("a1").CurrentRegion.Select

Ez a kód kijelöli az A1–C4 cellákat. Az alábbiakban további példákat is talál ugyanannak a cellatartománynak a kijelölésére:

ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -or-
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select

Bizonyos esetekben érdemes lehet kijelölni az A1–C6 cellatartományt. Ebben a példában a CurrentRegion metódus nem fog működni az 5. sor üres sora miatt. Az alábbi példák az összes cellát kijelölik:

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

Több nem összefüggő, eltérő hosszúságú oszlop kijelölése

Ha több nem összefüggő, eltérő hosszúságú oszlopot szeretne kijelölni, használja az alábbi példatáblát és makrót:

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

Ha ezt a kódot használja a mintatáblával, az A1:A3 és a C1:C6 cella lesz kijelölve.

Megjegyzések a példákhoz

Az ActiveSheet tulajdonság általában kihagyható, mert akkor van rá utalva, ha egy adott lap nincs elnevezve. Például ahelyett, hogy

ActiveSheet.Range("D5").Select

a következőt használhatja:

Range("D5").Select

Az ActiveWorkbook tulajdonság általában kihagyható. Ha nem nevez meg egy adott munkafüzetet, az aktív munkafüzetet a rendszer feltételezi.

Ha az Application.Goto metódust használja, ha a Tartomány metóduson belül két cellametódust szeretne használni, ha a megadott tartomány egy másik (nem aktív) munkalapon található, akkor minden alkalommal fel kell vennie a Lapok objektumot. Például:

    With ActiveWorkbook.Sheets("Sheet1")
        Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
    End With

Az idézőjelek bármelyik eleméhez (például a "Teszt" névvel ellátott tartományhoz) használhat olyan változót is, amelynek értéke szöveges sztring. Például ahelyett, hogy

ActiveWorkbook.Sheets("Sheet1").Activate

használhatja

ActiveWorkbook.Sheets(myVar).Activate

ahol a myVar értéke "Munka1".