Auswählen von Zellen/Bereichen mithilfe von Visual Basic-Prozeduren in Excel
Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionsfähigkeit sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind. In den Beispielen in diesem Artikel werden die in der folgenden Tabelle aufgeführten Visual Basic-Methoden verwendet.
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
In den Beispielen in diesem Artikel werden die Eigenschaften in der folgenden Tabelle verwendet.
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
Auswählen einer Zelle auf dem aktiven Arbeitsblatt
Zum Auswählen von Zelle D5 auf dem aktiven Arbeitsblatt können Sie eines der folgenden Beispiele verwenden:
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Auswählen einer Zelle auf einem anderen Arbeitsblatt in derselben Arbeitsmappe
Um Zelle E6 auf einem anderen Arbeitsblatt in derselben Arbeitsmappe auszuwählen, können Sie eines der folgenden Beispiele verwenden:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
-or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Alternativ können Sie das Arbeitsblatt aktivieren und dann die oben aufgeführte Methode 1 verwenden, um die Zelle auszuwählen:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Auswählen einer Zelle auf einem Arbeitsblatt in einer anderen Arbeitsmappe
Um Zelle F7 auf einem Arbeitsblatt in einer anderen Arbeitsmappe auszuwählen, können Sie eines der folgenden Beispiele verwenden:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Alternativ können Sie das Arbeitsblatt aktivieren und dann die oben aufgeführte Methode 1 verwenden, um die Zelle auszuwählen:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
Auswählen eines Zellbereichs auf dem aktiven Arbeitsblatt
Um den Bereich C2:D10 auf dem aktiven Arbeitsblatt auszuwählen, können Sie eines der folgenden Beispiele verwenden:
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
Auswählen eines Zellbereichs auf einem anderen Arbeitsblatt in derselben Arbeitsmappe
Um den Bereich D3:E11 auf einem anderen Arbeitsblatt in derselben Arbeitsmappe auszuwählen, können Sie eines der folgenden Beispiele verwenden:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Alternativ können Sie das Arbeitsblatt aktivieren und dann die oben genannte Methode 4 verwenden, um den Bereich auszuwählen:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Auswählen eines Zellbereichs auf einem Arbeitsblatt in einer anderen Arbeitsmappe
Zum Auswählen des Bereichs E4:F12 auf einem Arbeitsblatt in einer anderen Arbeitsmappe können Sie eines der folgenden Beispiele verwenden:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Alternativ können Sie das Arbeitsblatt aktivieren und dann die oben genannte Methode 4 verwenden, um den Bereich auszuwählen:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Auswählen eines benannten Bereichs auf dem aktiven Arbeitsblatt
Um den benannten Bereich "Test" auf dem aktiven Arbeitsblatt auszuwählen, können Sie eines der folgenden Beispiele verwenden:
Range("Test").Select
Application.Goto "Test"
Auswählen eines benannten Bereichs auf einem anderen Arbeitsblatt in derselben Arbeitsmappe
Um den benannten Bereich "Test" auf einem anderen Arbeitsblatt in derselben Arbeitsmappe auszuwählen, können Sie das folgende Beispiel verwenden:
Application.Goto Sheets("Sheet1").Range("Test")
Alternativ können Sie das Arbeitsblatt aktivieren und dann die oben genannte Methode 7 verwenden, um den benannten Bereich auszuwählen:
Sheets("Sheet1").Activate
Range("Test").Select
Auswählen eines benannten Bereichs auf einem Arbeitsblatt in einer anderen Arbeitsmappe
Um den benannten Bereich "Test" auf einem Arbeitsblatt in einer anderen Arbeitsmappe auszuwählen, können Sie das folgende Beispiel verwenden:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Alternativ können Sie das Arbeitsblatt aktivieren und dann die oben genannte Methode 7 verwenden, um den benannten Bereich auszuwählen:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Auswählen einer Zelle relativ zur aktiven Zelle
Um eine Zelle auszuwählen, die fünf Zeilen darunter und vier Spalten links neben der aktiven Zelle liegt, können Sie das folgende Beispiel verwenden:
ActiveCell.Offset(5, -4).Select
Um eine Zelle auszuwählen, die zwei Zeilen oberhalb und drei Spalten rechts neben der aktiven Zelle liegt, können Sie das folgende Beispiel verwenden:
ActiveCell.Offset(-2, 3).Select
Hinweis
Wenn Sie versuchen, eine Zelle auszuwählen, die sich "außerhalb des Arbeitsblatts" befindet, tritt ein Fehler auf. Das erste oben gezeigte Beispiel gibt einen Fehler zurück, wenn sich die aktive Zelle in den Spalten A bis D befindet, da das Verschieben von vier Spalten nach links die aktive Zelle zu einer ungültigen Zelladresse führt.
Auswählen einer Zelle relativ zu einer anderen Zelle (nicht der aktiven Zelle)
Um eine Zelle auszuwählen, die fünf Zeilen darunter und vier Spalten rechts neben Zelle C7 liegt, können Sie eines der folgenden Beispiele verwenden:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Auswählen eines Zellbereichs, der von einem angegebenen Bereich versetzt ist
Um einen Zellbereich auszuwählen, der die gleiche Größe wie der benannte Bereich "Test" aufweist, der jedoch vier Zeilen nach unten und drei Spalten nach rechts verschoben ist, können Sie das folgende Beispiel verwenden:
ActiveSheet.Range("Test").Offset(4, 3).Select
Wenn sich der benannte Bereich auf einem anderen (nicht dem aktiven) Arbeitsblatt befindet, aktivieren Sie zuerst dieses Arbeitsblatt, und wählen Sie dann den Bereich im folgenden Beispiel aus:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Auswählen eines angegebenen Bereichs und Ändern der Größe der Auswahl
Um den benannten Bereich "Datenbank" auszuwählen und die Auswahl dann um fünf Zeilen zu erweitern, können Sie das folgende Beispiel verwenden:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Auswählen eines angegebenen Bereichs, Versatz und anschließendes Ändern der Größe
Um einen Bereich auszuwählen, der vier Zeilen darunter und drei Spalten rechts neben dem benannten Bereich "Datenbank" liegt und zwei Zeilen und eine Spalte mehr als den benannten Bereich enthält, können Sie das folgende Beispiel verwenden:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
Auswählen der Vereinigung von zwei oder mehr angegebenen Bereichen
Zum Auswählen der Vereinigung (d. a. des kombinierten Bereichs) der beiden benannten Bereiche "Test" und "Sample" können Sie das folgende Beispiel verwenden:
Application.Union(Range("Test"), Range("Sample")).Select
Hinweis
dass sich beide Bereiche auf demselben Arbeitsblatt befinden müssen, damit dieses Beispiel funktioniert. Beachten Sie auch, dass die Union-Methode nicht blätterübergreifend funktioniert. Diese Zeile funktioniert z. B. einwandfrei.
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
aber diese Zeile
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
gibt die Fehlermeldung zurück:
Union-Methode der Anwendungsklasse fehlgeschlagen
Auswählen der Schnittmenge von zwei oder mehr angegebenen Bereichen
Um die Schnittmenge der beiden benannten Bereiche "Test" und "Sample" auszuwählen, können Sie das folgende Beispiel verwenden:
Application.Intersect(Range("Test"), Range("Sample")).Select
Beachten Sie, dass sich beide Bereiche auf demselben Arbeitsblatt befinden müssen, damit dieses Beispiel funktioniert.
Die Beispiele 17-21 in diesem Artikel beziehen sich auf den folgenden Beispielsatz von Daten. Jedes Beispiel gibt den Zellbereich in den Ausgewählten Beispieldaten an.
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
Auswählen der letzten Zelle einer Spalte zusammenhängender Daten
Verwenden Sie das folgende Beispiel, um die letzte Zelle in einer zusammenhängenden Spalte auszuwählen:
ActiveSheet.Range("a1").End(xlDown).Select
Wenn dieser Code mit der Beispieltabelle verwendet wird, wird Zelle A4 ausgewählt.
So markieren Sie die leere Zelle unten in einer Spalte mit zusammenhängenden Daten
Verwenden Sie das folgende Beispiel, um die Zelle unter einem Bereich zusammenhängender Zellen auszuwählen:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Wenn dieser Code mit der Beispieltabelle verwendet wird, wird Zelle A5 ausgewählt.
Auswählen eines gesamten Bereichs zusammenhängender Zellen in einer Spalte
Verwenden Sie eines der folgenden Beispiele, um einen Bereich zusammenhängender Zellen in einer Spalte auszuwählen:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Wenn dieser Code mit der Beispieltabelle verwendet wird, werden die Zellen A1 bis A4 ausgewählt.
Auswählen eines gesamten Bereichs nicht zusammenhängender Zellen in einer Spalte
Verwenden Sie eines der folgenden Beispiele, um einen Zellbereich auszuwählen, der nicht zusammenhängend ist:
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
Wenn dieser Code mit der Beispieltabelle verwendet wird, werden die Zellen A1 bis A6 markiert.
Auswählen eines rechteckigen Zellbereichs
Um einen rechteckigen Zellbereich um eine Zelle auszuwählen, verwenden Sie die CurrentRegion-Methode. Der von der CurrentRegion-Methode ausgewählte Bereich ist ein Bereich, der durch eine beliebige Kombination aus leeren Zeilen und leeren Spalten begrenzt wird. Es folgt ein Beispiel für die Verwendung der CurrentRegion-Methode:
ActiveSheet.Range("a1").CurrentRegion.Select
Mit diesem Code werden die Zellen A1 bis C4 markiert. Weitere Beispiele zum Auswählen desselben Zellbereichs sind unten aufgeführt:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
-or-
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
In einigen Fällen möchten Sie möglicherweise die Zellen A1 bis C6 markieren. In diesem Beispiel funktioniert die CurrentRegion-Methode aufgrund der leeren Zeile in Zeile 5 nicht. In den folgenden Beispielen werden alle Zellen markiert:
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
Auswählen mehrerer nicht zusammenhängender Spalten unterschiedlicher Länge
Verwenden Sie zum Auswählen mehrerer nicht zusammenhängender Spalten unterschiedlicher Länge die folgende Beispieltabelle und ein Makrobeispiel:
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
Wenn dieser Code mit der Beispieltabelle verwendet wird, werden die Zellen A1:A3 und C1:C6 ausgewählt.
Hinweise zu den Beispielen
Die ActiveSheet-Eigenschaft kann in der Regel weggelassen werden, da sie impliziert wird, wenn ein bestimmtes Blatt nicht benannt ist. Beispielsweise anstelle von
ActiveSheet.Range("D5").Select
Sie können Folgendes verwenden:
Range("D5").Select
Die ActiveWorkbook-Eigenschaft kann in der Regel auch weggelassen werden. Sofern keine bestimmte Arbeitsmappe benannt ist, wird die aktive Arbeitsmappe impliziert.
Wenn Sie die Application.Goto-Methode verwenden, wenn Sie zwei Cells-Methoden innerhalb der Range-Methode verwenden möchten, wenn sich der angegebene Bereich auf einem anderen (nicht dem aktiven) Arbeitsblatt befindet, müssen Sie das Sheets-Objekt jedes Mal einschließen. Beispiel:
With ActiveWorkbook.Sheets("Sheet1")
Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
End With
Für jedes Element in Anführungszeichen (z. B. den benannten Bereich "Test") können Sie auch eine Variable verwenden, deren Wert eine Textzeichenfolge ist. Beispielsweise anstelle von
ActiveWorkbook.Sheets("Sheet1").Activate
Sie können
ActiveWorkbook.Sheets(myVar).Activate
wobei der Wert von myVar "Sheet1" ist.