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.