Cellák/tartományok kijelölése az Excel programban Visual Basic-eljárások használatával

A cikk fordítása A cikk fordítása
Cikk azonosítója: 291308 - A cikkben érintett termékek listájának megtekintése.
Az összes kibontása | Az összes összecsukása

A lap tartalma

További információ

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, beleértve többek között a forgalomba hozhatóságot és az adott célra való megfelelőséget is. A cikk feltételezi, hogy az olvasó jártas a bemutatott 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 funkciójának megértésében, de funkcióbő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.
   Metódus             Argumentumok
   ------------------------------------------
   Activate           nincs
   Cells              rowIndex, columnIndex
   Application.Goto   reference, scroll
   Offset             rowOffset, columnOffset
   Range              cell1
                      cell1, cell2
   Resize             rowSize, columnSize
   Select             nincs
   Sheets             index (vagy sheetName)
   Workbooks          index (vagy bookName)
   End                direction
   CurrentRegion      nincs
				
A cikkben szereplő példák az alábbi táblázatban felsorolt tulajdonságokat használják.
   Tulajdonság         Felhasználás
   ---------------------------------------------------------------------
   ActiveSheet      az aktív munkalap megadása
   ActiveWorkbook   az aktív munkafüzet megadása
   Columns.Count    az oszlopok megszámolása a megadott elemben
   Rows.Count       a sorok megszámolása a megadott elemben
   Selection        hivatkozás az aktuálisan kijelölt tartományra
				

1: Cella kijelölése az aktív munkalapon

Az aktív munkalap D5 cellájának kijelölésére az alábbi példák bármelyike használható:
ActiveSheet.Cells(5, 4).Select
				
– vagy –
ActiveSheet.Range("D5").Select
				

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

Ugyanazon munkafüzet egy másik munkalapján található E6 cella kijelölésére az alábbi példák bármelyike használható:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
				
   – vagy –
				
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
				
Aktiválhatja is a munkalapot, majd a fenti 1. metódus segítségével kijelölheti a cellát:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
				

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

Egy másik munkafüzetben található munkalap F7 cellájának kijelölésére az alábbi példák bármelyike használható:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
				
– vagy –
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
				
Aktiválhatja is a munkalapot, majd a fenti 1. metódus segítségével kijelölheti a cellát:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
				

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

Az aktív munkalap C2:D10 tartományának kijelölésére az alábbi példák bármelyike használható:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
				
ActiveSheet.Range("C2:D10").Select
				
ActiveSheet.Range("C2", "D10").Select
				

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

Ugyanazon munkafüzet egy másik munkalapján található D3:E11 tartomány kijelölésére az alábbi példák bármelyike használható:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
				
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
				
Aktiválhatja is a munkalapot, majd a fenti 4. metódus segítségével kijelölheti a tartományt:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
				

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

Egy másik munkafüzetben található munkalap E4:F12 tartományának kijelölésére az alábbi példák bármelyike használható:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
				
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
				
Aktiválhatja is a munkalapot, majd a fenti 4. metódus segítségével kijelölheti a tartományt:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
				

7: Elnevezett tartomány kijelölése az aktív munkalapon

Az aktív munkalap „Teszt” elnevezett tartományának kijelölésére az alábbi példák bármelyike használható:
Range("Teszt").Select
				
Application.Goto "Teszt"
				

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

Ugyanazon munkafüzet egy másik munkalapján található „Teszt” elnevezett tartomány kijelölésére az alábbi példa használható:
Application.Goto Sheets("Sheet1").Range("Teszt")
				
Aktiválhatja is a munkalapot, majd a fenti 7. metódus segítségével kijelölheti az elnevezett tartományt:
Sheets("Sheet1").Activate
Range("Teszt").Select
				

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

Egy másik munkafüzetben található munkalap „Teszt” elnevezett tartományának kijelölésére az alábbi példa használható:
Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Teszt")
				
Aktiválhatja is a munkalapot, majd a fenti 7. metódus segítségével kijelölheti az elnevezett tartományt:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Teszt").Select
				

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

Az aktív cellától öt sorral lefelé és négy oszloppal balra található cella kijelölésére a következő példa használható:
ActiveCell.Offset(5, -4).Select
				
Az aktív cellától két sorral felfelé ás három oszloppal jobbra található cella kijelölésére a következő példa használható:
ActiveCell.Offset(-2, 3).Select
				
Megjegyzés: A program hibát jelez, ha a „munkalapon kívüli” cellát próbál meg kijelölni. A fent bemutatott első példa hibát fog eredményezni, ha az aktív cella az A-D oszlopok valamelyikében található, mivel a négy oszloppal balra történő mozgás az aktív cellát érvénytelen cellapozícióba helyezné.

11: Cella kijelölése másik (nem az aktív) cellához viszonyítva

A C7 cellától öt sorral lefelé és négy oszloppal jobbra található cella kijelölésére a következő példák bármelyike használható:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
				
ActiveSheet.Range("C7").Offset(5, 4).Select
				

12: Adott tartományból eltolt cellatartomány kijelölése

Annak a cellatartománynak a kijelölésére, amely a „Teszt” elnevezett tartománnyal megegyező méretű, de attól négy sorral lefelé és három oszloppal jobbra található, az alábbi példa használható:
ActiveSheet.Range("Teszt").Offset(4, 3).Select
				
Ha az elnevezett tartomány egy másik (nem az aktív) munkalapon található, először aktiválja a munkalapot, majd jelölje ki a tartományt az alábbi példa segítségével:
Sheets("Sheet3").Activate
ActiveSheet.Range("Teszt").Offset(4, 3).Select
				

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

Az „Adatbázis” elnevezett tartomány kijelölésére és a kijelölés öt sorral történő kiterjesztésére az alábbi példa használható:
Range("Adatbázis").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select
				

14: Adott tartomány kijelölése, eltolása, majd átméretezése

Annak a tartománynak a kijelölésére, amely az „Adatbázis” elnevezett tartománytól négy sorral lefelé és három oszloppal jobbra található, majd az elnevezett tartománynál kettővel több sor és eggyel több oszlop belefoglalására az alábbi példa használható:
Range("Adatbázis").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select
				

15: Két vagy több adott tartomány uniójának kijelölése

A „Teszt” és a „Minta” elnevezett tartományok uniójának (vagyis az összesített területnek) a kijelölésére az alábbi példa használható:
Application.Union(Range("Teszt"), Range("Minta")).Select
				
Vegye figyelembe, hogy a jelen példa csak akkor használható, ha a két tartomány ugyanazon a munkalapon található. Azt is tartsa szem előtt, hogy az Unió metódus sem működik munkalapok 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 következő hibaüzenetet adja vissza:
Az alkalmazásosztály Unió metódusa sikertelen

16: Két vagy több adott tartomány metszetének kijelölése

A „Teszt” és a „Minta” elnevezett tartományok metszetének kijelölésére az alábbi példa használható:
Application.Intersect(Range("Teszt"), Range("Minta")).Select
				
Vegye figyelembe, hogy a jelen példa csak akkor használható, ha a két tartomány ugyanazon a munkalapon található.



A cikk 17-21-es számú példái a következő minta adatkészletre hivatkoznak. Minden példa azt feltételezi, hogy a mintaadatok cellatartománya van kijelölve.
   A1: Név    B1: Értékesítés    C1: Mennyiség
   A2: a       B2: $10      C2: 5
   A3: b       B3:          C3: 10
   A4: c       B4: $10      C4: 5
   A5:         B5:          C5:
   A6: Összeg:   B6: $20      C6: 20
				

17: Folyamatos adatoszlop utolsó cellájának kijelölése

Egy folyamatos oszlop utolsó cellájának kijelölésére az alábbi példa használható:
ActiveSheet.Range("a1").End(xlDown).Select
				
Ha ezt a kódot a mintatáblával együtt használja, akkor az A4 cellát jelöli ki a rendszer.

18: Folyamatos adatoszlop alatt található üres cella kijelölése

Egy folyamatos cellatartomány alatti cella kijelölésére a következő példa használható:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
				
Ha ezt a kódot a mintatáblával együtt használja, akkor az A5 cellát jelöli ki a rendszer.

19: Adott oszlopban található, egymást követő cellák teljes tartományának kijelölése

Az adott oszlopban található, egymást követő cellák teljes tartomány kijelölésére a következő példák bármelyike használható:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
				
   – vagy –
				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select
				
Ha ezt a kódot a mintatáblával együtt használja, akkor az A1–A4 cellákat jelöli ki a rendszer.

20: Adott oszlopban található, nem egymást követő cellák teljes tartományának kijelölése

Adott oszlopban található cellák nem egymást követő tartományának kijelölésére az alábbi példák bármelyike használható:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select
				
   – vagy –
				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
   End(xlUp).Address).Select
				
Ha ezt a kódot a mintatáblával együtt használja, akkor az A1–A6 cellákat jelöli ki a rendszer.

21: Négyszögletű cellatartomány kijelölése

Egy adott cella körüli négyszögletes cellatartomány kijelölésére használja a CurrentRegion metódust. A CurrentRegion metódussal kijelölt tartomány egy olyan terület, amelyet üres sorok és oszlopok valamilyen kombinációja határol. Az alábbi példa a CurrentRegion metódus használatát mutatja be:
ActiveSheet.Range("a1").CurrentRegion.Select
				
Ez a kód az A1–C4 cellákat jelöli ki. Az alábbiakban további példák láthatók ugyanezen cellatartomány kijelölésére:
ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
				
   – vagy –
				
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
				
Egyes esetekben előfordulhat, hogy az A1–A6 cellákat kívánja kijelölni. Ebben a példában a CurrentRegion metódus nem fog működni, mivel az 5. sor üres. Az alábbi példák az összes cellát kijelölik:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
				
    – vagy –
				
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select
				

22. Nem egymást követő, eltérő hosszúságú oszlopok kijelölése

Eltérő hosszúságú, nem egymást követő oszlopok kijelöléséhez az alábbi mintatábla és makrópélda használható:
   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 a mintatáblával együtt használja, akkor az A1–A3 és a C1–C6 cellákat jelöli ki a rendszer.

MEGJEGYZÉSEK A PÉLDÁKKAL KAPCSOLATBAN

  • Az ActiveSheet tulajdonság általában kihagyható, mivel ha nem nevez meg munkalapot, a rendszer ezt használja. Például a következő helyett:
    ActiveSheet.Range("D5").Select
    						
    használható az alábbi:
    Range("D5").Select
    						
  • Az ActiveWorkbook tulajdonság általában szintén kihagyható. Ha nem nevez meg egy adott munkafüzetet, a rendszer az aktív munkafüzetet használja.
  • Ha az Application.Goto metódus használatakor két Cells metódust kíván használni a Range metóduson belül, és a megadott tartomány egy másik (nem az aktív) munkalapon található, minden egyes alkalommal be kell foglalnia a Sheets objektumot. Például:
    Application.Goto Sheets("Sheet1").Range( _
          Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
          Sheets("Sheet1").Cells(4, 5)))
    					
  • Bármely idézőjelek között található elem esetében (például a "Teszt" elnevezett tartomány) használható egy változó is, amelynek értéke egy szöveges karaktersor. Például a következő helyett:
    ActiveWorkbook.Sheets("Sheet1").Activate
    						
    használható az alábbi:
    ActiveWorkbook.Sheets(myVar).Activate
    						
    ahol a myVar értéke "Sheet1".

Hivatkozások


A jelen cikkben olvasható példakódok használatáról a Microsoft Tudásbázis alábbi cikkében tájékozódhat:
290140 A Tudásbázis-cikkekben szereplő, Office XP programokhoz használható példakódok futtatása (Előfordulhat, hogy a tartalom angol nyelven érhető el)
Megjegyzés: Ez egy „GYORS KÖZZÉTÉTELŰ” cikk, amelyet maga Microsoft támogatási csoportja készített. A benne fogalt információkat a jelentkező problémákra válaszul, az adott állapotukban biztosítjuk. Az anyagok a közzétételük gyorsaságából következően tartalmazhatnak sajtóhibákat, illetve külön értesítés nélkül bármikor átdolgozáson eshetnek át. További tudnivalók olvashatók a felhasználási feltételek között.

Tulajdonságok

Cikk azonosítója: 291308 - Utolsó ellenőrzés: 2012. augusztus 1. - Verziószám: 1.0
A cikkben található információ a következő(k)re vonatkozik:
  • Microsoft Office Excel 2003
  • Microsoft Office Excel 2007
  • Microsoft Excel 2010
Kulcsszavak: 
kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
A Microsoft tudásbázisban szolgáltatott információkat "az adott állapotban", bárminemű szavatosság vagy garancia nélkül biztosítjuk. A Microsoft kizár mindennemű, akár kifejezett, akár vélelmezett szavatosságot vagy garanciát, ideértve a forgalomképességre és az adott célra való alkalmasságra vonatkozó szavatosságot is. A Microsoft Corporation és annak beszállítói semmilyen körülmények között nem felelősek semminemű kárért, így a közvetlen, a közvetett, az üzleti haszon elmaradásából származó vagy speciális károkért, illetve a kár következményeként felmerülő költségek megtérítéséért, még abban az esetben sem, ha a Microsoft Corporationt vagy beszállítóit az ilyen károk bekövetkeztének lehetőségére figyelmeztették. Egyes államok joga nem teszi lehetővé bizonyos károkért a felelősség kizárását vagy korlátozását, ezért a fenti korlátozások az ön esetében esetleg nem alkalmazhatók.

Visszajelzés küldése

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com