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