Cellák/tartományok kijelölése visual basic eljárásokkal az Excelben
2020. 03. 18.
6 perc alatt elolvasható
A következőre érvényes::
Excel for Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2010
A cikk tartalma
A Microsoft csak illusztrációként szolgál, kifejezett vagy hallgatólagos garancia nélkül. Ez magában foglalja, de nem kizárólagosan, a vélelmezett garanciát az eladhatóság vagy fitness egy adott célra. Ez a cikk feltételezi, hogy ismeri a bemutatandó programozási nyelvet és az eljárások létrehozásához és hibakereséséhez használt eszközöket. A Microsoft támogatási szakemberei segíthetnek egy adott eljárás működésének magyarázatában, de ezeket a példákat nem módosítják, hogy további funkciókat biztosítsanak, vagy eljárásokat építsenek ki az adott követelményeknek megfelelően. A cikkben ismertetett 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 található 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
Ha az aktív munkalapon a D5 cellát szeretné kijelölni, az alábbi példák egyikét használhatja:
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Cella kijelölése ugyanazon munkafüzet egy másik munkalapján
Ha ugyanabban a munkafüzetben egy másik munkalapon szeretné kijelölni az E6 cellát, az alábbi példák egyikét használhatja:
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.
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Cella kijelölése egy munkalapon egy másik munkafüzetben
Ha egy másik munkafüzet munkaalapján az F7 cellát szeretné kijelölni, az alábbi példák egyikét használhatja:
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.
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
Cellatartomány kijelölése az aktív munkalapon
Az aktív munkalapC2: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 egy munkafüzet egy másik munkaterén a D3:E11 tartományt szeretné kiválasztani, az alábbi példák egyikét használhatja:
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.
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Cellatartomány kijelölése egy munkalapon egy másik munkafüzetben
Ha egy másik munkafüzet munkaalapján az E4:F12 tartományt szeretné kiválasztani, az alábbi példák egyikét használhatja:
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.
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Elnevezett tartomány kijelölése az aktív munkalapon
Ha az aktív munkalapon ki szeretné jelölni a "Teszt" nevű tartományt, az alábbi példák egyikét használhatja:
Range("Test").Select
Application.Goto "Test"
Elnevezett tartomány kijelölése ugyanazon munkafüzet egy másik munkalapján
Ha ugyanabban a munkafüzetben egy másik munkalapon ki szeretné jelölni a "Teszt" nevű tartományt, a következő példát használhatja:
Application.Goto Sheets("Sheet1").Range("Test")
Vagy aktiválhatja a munkalapot, majd a fenti 7.
Sheets("Sheet1").Activate
Range("Test").Select
Elnevezett tartomány kijelölése egy munkalapon egy másik munkafüzetben
Ha egy másik munkafüzet munkaalapján a "Teszt" nevű tartományt szeretné kiválasztani, a következő példát használhatja:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Vagy aktiválhatja a munkalapot, majd a fenti 7.
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Cella kijelölése az aktív cellához viszonyítva
Ha az aktív cellátkövető öt sorral és négy oszloppal balra lévő cellát szeretné kijelölni, a következő példát használhatja:
ActiveCell.Offset(5, -4).Select
Ha két sorral feljebb és az aktív celláttól jobbra lévő három oszloppal szeretne kijelölni, a következő példát használhatja:
ActiveCell.Offset(-2, 3).Select
Megjegyzés
Hiba történik, ha olyan cellát próbál kijelölni, amely "a munkalapon kívül" van. A fenti első példa hibát ad vissza, ha az aktív cella az A-tól D-ig oszlopban van, mivel négy oszlop balra mozgatása az aktív cellát érvénytelen cellacímre viszi.
Cella kijelölése egy másikhoz képest (nem az aktív) cellához viszonyítva
Ha a C7 celláttól öt sorral és négy oszloppal jobbra lévő cellát szeretné kijelölni, 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 eltolásának kiválasztása egy megadott tartományból
Ha olyan cellatartományt szeretne kijelölni, amely mérete megegyezik a "Teszt" nevű tartománysal, de négy sort lefelé, és három oszlopot jobbra tol, a következő példát használhatja:
ActiveSheet.Range("Test").Offset(4, 3).Select
Ha az elnevezett tartomány egy másik (nem az aktív) munkalapon található, először aktiválja azt a munkalapot, majd válassza ki a tartományt a következő példával:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Adott tartomány kiválasztása és kijelölésének átméretezése
Az "Adatbázis" nevű tartomány kiválasztásához, majd a kijelölés öt sorból történő kiterjesztéséhez a következő példát használhatja:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Adott tartomány kiválasztása, eltolása és átméretezése
Ha az "Adatbázis" nevű tartománytól jobbra négy sort és három oszlopot szeretne kijelölni, és két sort és egy oszlopot szeretne a névvel ellátott tartománynál, a következő példát használhatja:
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 elnevezett tartomány egyesítésének (azaz egyesített területének) kiválasztásához a következő példát használhatja:
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 uniós módszer 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 vonal
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
a hibaüzenetet adja vissza:
Az alkalmazásosztály uniós metódusa nem sikerült
Két vagy több megadott tartomány metszéspontjának kijelölése
A "Teszt" és a "Minta" két elnevezett tartomány metszéspontjának kijelöléséhez a következő példát használhatja:
Application.Intersect(Range("Test"), Range("Sample")).Select
Ne feledje, hogy mindkét tartománynak ugyanazon a munkalapon kell lennie ahhoz, hogy ez a példa működjön.
A cikk ben szereplő 17–21. Minden példa a kiválasztott mintaadatok ban lévő cellatartományt jelöli.
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
Összefüggő adatok oszlopának utolsó cellájának kijelölése
Egy összefüggő oszlop utolsó cellájának kijelöléséhez használja a következő példát:
ActiveSheet.Range("a1").End(xlDown).Select
Ha ezt a kódot használja a mintatáblával, az A4 cella lesz kiválasztva.
Az üres cella kijelölése a összefüggő adatok oszlopának alján
Az összefüggő cellák tartománya alatti cella kijelöléséhez használja a következő példát:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Ha ezt a kódot használja a mintatáblával, az A5 cella lesz kiválasztva.
Az oszlop összefüggő 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 a mintatáblázattal használja, az A1–A4 cellák lesznek kiválasztva.
Nem összefüggő cellák teljes tartományának kijelölése egy oszlopban
Ha nem összefüggő 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ázattal, az A1–A6 cellákat jelöli ki.
A cellák téglalap tartományának kiválasztása
A cella körüli cellatéglalap tartomány kiválasztásához használja a CurrentRegion metódust. Az CurrentRegion metódus által kiválasztott tartomány olyan terület, amelyet üres sorok és üres oszlopok tetszőleges kombinációja határol. Az alábbi példa a CurrentRegion metódus használatát ismerteti:
ActiveSheet.Range("a1").CurrentRegion.Select
Ez a kód kiválasztja az A1–C4 cellákat. Az azonos cellatartomány kiválasztására az alábbi példák at soroljuk fel:
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 az A1–C6 cellákat kijelölni. Ebben a példában a CurrentRegion metódus nem fog működni az 5. A következő 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, különböző hosszúságú, nem összefüggő oszlop kijelölése
Több, eltérő hosszúságú, nem összefüggő oszlop kijelöléséhez használja az alábbi mintatáblázatot és makrópéldá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ázattal, az A1:A3 és a C1:C6 cellák lesznek kiválasztva.
Megjegyzések a példákhoz
Az ActiveSheet tulajdonság általában elhagyható, mert ez azt jelenti, ha egy adott lap nincs elnevezve. Például ahelyett, hogy
ActiveSheet.Range("D5").Select
használhatja:
Range("D5").Select
Az ActiveWorkbook tulajdonság általában kihagyható. Ha nincs elnevezve egy adott munkafüzet, az aktív munkafüzet hallgatólagosan megjelenik.
Az Application.Goto metódus használatakor, ha két cellametódust szeretne használni a Tartomány metóduson belül, ha a megadott tartomány egy másik (nem az aktív) munkalapon van, minden alkalommal meg kell adnia a Lapok objektumot. Például:
With ActiveWorkbook.Sheets("Sheet1")
Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
End With
Idézőjelek között lévő elemek (például a "Teszt" nevű tartomány) esetében olyan változót is használhat, amelynek értéke szöveges karakterlánc. Például ahelyett, hogy
ActiveWorkbook.Sheets("Sheet1").Activate
használhatja
ActiveWorkbook.Sheets(myVar).Activate
ahol a myVar értéke "Sheet1".