Auswählen von Zellen/Bereichen mithilfe von Visual Basic-Prozeduren in Excel

Gilt für: Microsoft Office Excel 2003Microsoft Office Excel 2007Excel 2010 Mehr

Weitere Informationen


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. Bei den Beispielen in diesem Artikel werden die Visual Basic-Methoden in der folgenden Tabelle verwendet.

Methode Argumente
------------------------------------------
Activate keine
Cells rowIndex, columnIndex
Application.Goto reference, scroll
Offset rowOffset, columnOffset
Range cell1
cell1, cell2
Resize rowSize, columnSize
Select none
Sheets index (oder sheetName)
Workbooks index (oder bookName)
End direction
CurrentRegion keine
Bei den Beispielen in diesem Artikel werden die Eigenschaften in der folgenden Tabelle verwendet.

Eigenschaft Verwendung
---------------------------------------------------------------------
ActiveSheet Bestimmen des aktiven Arbeitsblatts
ActiveWorkbook Bestimmen der aktiven Arbeitsmappe
Columns.Count Bestimmen der Spaltenanzahl im angegebenen Element
Rows.Count Bestimmen der Zeilenanzahl im angegebenen Element
Selection Herstellen des Bezugs zum aktuell ausgewählten Bereich

1: Auswählen einer Zelle im aktiven Arbeitsblatt

Verwenden Sie eines der folgenden Beispiele, um die Zelle D5 im aktiven Arbeitsblatt auszuwählen:
ActiveSheet.Cells(5, 4).Select
- oder -
ActiveSheet.Range("D5").Select

2: Auswählen einer Zelle in einem anderen Arbeitsblatt in derselben Arbeitsmappe

Verwenden Sie eines der folgenden Beispiele, um die Zelle E6 in einem anderen Arbeitsblatt in derselben Arbeitsmappe auszuwählen:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)

- oder -
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Sie können auch das Arbeitsblatt aktivieren und anschließend die zuvor beschriebene Methode 1 anwenden, um die Zelle auszuwählen:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

3: Auswählen einer Zelle in einem Arbeitsblatt in einer anderen Arbeitsmappe

Verwenden Sie eines der folgenden Beispiele, um die Zelle F7 in einem Arbeitsblatt in einer anderen Arbeitsmappe auszuwählen:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
- oder -
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Sie können auch das Arbeitsblatt aktivieren und anschließend die zuvor beschriebene Methode 1 anwenden, um die Zelle auszuwählen:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

4: Auswählen eines Zellbereichs im aktiven Arbeitsblatt

Verwenden Sie eines der folgenden Beispiele, um den Bereich C2:D10 im aktiven Arbeitsblatt auszuwählen:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

5: Auswählen eines Zellbereichs in einem anderen Arbeitsblatt in derselben Arbeitsmappe

Verwenden Sie eines der folgenden Beispiele, um den Bereich D3:E11 in einem anderen Arbeitsblatt in derselben Arbeitsmappe auszuwählen:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Sie können auch das Arbeitsblatt aktivieren und anschließend Methode 4 anwenden, um den Bereich auszuwählen:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

6: Auswählen eines Zellbereichs in einem Arbeitsblatt in einer anderen Arbeitsmappe

Verwenden Sie eines der folgenden Beispiele, um den Bereich E4:F12 in einem Arbeitsblatt in einer anderen Arbeitsmappe auszuwählen:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Sie können auch das Arbeitsblatt aktivieren und anschließend Methode 4 anwenden, um den Bereich auszuwählen:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

7: Auswählen eines benannten Bereichs im aktiven Arbeitsblatt

Verwenden Sie eines der folgenden Beispiele, um den Bereich mit dem Namen "Test" im aktiven Arbeitsblatt auszuwählen:
Range("Test").Select
Application.Goto "Test"

8: Auswählen eines benannten Bereichs in einem anderen Arbeitsblatt in derselben Arbeitsmappe

Verwenden Sie folgendes Beispiel, um den Bereich mit dem Namen "Test" in einem anderen Arbeitsblatt in derselben Arbeitsmappe auszuwählen:
Application.Goto Sheets("Sheet1").Range("Test")
Sie können auch das Arbeitsblatt aktivieren und anschließend Methode 7 anwenden, um den benannten Bereich auszuwählen:
Sheets("Sheet1").Activate
Range("Test").Select

9: Auswählen eines benannten Bereichs in einem Arbeitsblatt in einer anderen Arbeitsmappe

Verwenden Sie folgendes Beispiel, um den Bereich mit dem Namen "Test" in einem Arbeitsblatt in einer anderen Arbeitsmappe auszuwählen:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Sie können auch das Arbeitsblatt aktivieren und anschließend Methode 7 anwenden, um den benannten Bereich auszuwählen:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

10: Auswählen einer Zelle, die relativ zur aktiven Zelle liegt

Verwenden Sie folgendes Beispiel, um eine Zelle auszuwählen, die fünf Zeilen unter und vier Spalten links von der aktiven Zelle liegt:
ActiveCell.Offset(5, -4).Select
Verwenden Sie folgendes Beispiel, um eine Zelle auszuwählen, die zwei Zeilen über und drei Spalten rechts von der aktiven Zelle liegt:
ActiveCell.Offset(-2, 3).Select
Hinweis Wenn Sie eine Zelle auszuwählen versuchen, die „außerhalb des Arbeitsblatts“ liegt, wird eine Fehlermeldung angezeigt. Das zuvor aufgeführte erste Beispiel gibt einen Fehler zurück, wenn die aktive Zelle sich in einer der Spalten von A bis D befindet, da die aktive Zelle durch das Verschieben um vier Spalten nach links zu einer ungültigen Zelladresse verschoben würde.

11: Auswählen einer Zelle, die relativ zu einer anderen (nicht die aktive) Zelle liegt

Verwenden Sie eines der folgenden Beispiele, um eine Zelle auszuwählen, die fünf Zeilen unter und vier Spalten rechts von der Zelle C7 liegt:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

12: Auswählen eines Zellbereichs, der von einem festgelegten Bereich versetzt liegt

Verwenden Sie folgendes Beispiel, um einen Zellbereich auszuwählen, der größenmäßig dem Bereich "Test" entspricht, aber um vier Zeilen nach unten und drei Spalten nach rechts verschoben ist:
ActiveSheet.Range("Test").Offset(4, 3).Select
Wenn sich der benannte Bereich in einem anderen Arbeitsblatt als dem aktiven Arbeitsblatt befindet, aktivieren Sie zuerst das Arbeitsblatt, und wählen Sie anschließend den Bereich mithilfe des folgenden Beispiels aus:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

13: Auswählen eines festgelegten Bereichs und Ändern der Größe dieses Bereichs

Verwenden Sie folgendes Beispiel, um den Bereich mit dem Namen "Database" auszuwählen und anschließend um fünf Zeilen zu erweitern:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select

14: Auswählen, Versetzen und Ändern der Größe eines festgelegten Bereichs

Verwenden Sie folgendes Beispiel, um einen Bereich auszuwählen, der vier Zeilen unter und drei Spalten rechts vom Bereich "Database" liegt, und um den Bereich um zwei Zeilen und eine Spalte gegenüber dem benannten Bereich zu erweitern:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select

15: Auswählen der Vereinigungsmenge aus zwei oder mehreren festgelegten Bereichen

Verwenden Sie folgendes Beispiel, um die Vereinigungsmenge (d. h. den zusammengefassten Bereich) der beiden benannten Bereiche "Test" und "Sample" auszuwählen:
Application.Union(Range("Test"), Range("Sample")).Select
Beachten Sie, dass dieses Beispiel nur funktioniert, wenn sich beide Bereiche im selben Arbeitsblatt befinden. Beachten Sie außerdem, dass die Union-Methode zum Auswählen der Vereinigungsmenge nicht über verschiedene Arbeitsblätter hinweg funktioniert. Die folgende Befehlszeile funktioniert z. B. einwandfrei:
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
Die folgende Befehlszeile funktioniert dagegen nicht:
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
Bei dieser Zeile wird folgende Fehlermeldung angezeigt:
Die Union-Methode des Application-Objekts konnte nicht ausgeführt werden.

16: Auswählen der Schnittmenge von zwei oder mehreren festgelegten Bereichen

Verwenden Sie folgendes Beispiel, um die Schnittmenge der beiden Bereiche "Test" und "Sample" auszuwählen:
Application.Intersect(Range("Test"), Range("Sample")).Select
Beachten Sie, dass dieses Beispiel nur funktioniert, wenn sich beide Bereiche im selben Arbeitsblatt befinden.



Die Beispiele 17 bis 21 in diesem Artikel beziehen sich auf folgenden Beispieldatensatz. In jedem Beispiel werden die jeweils ausgewählten Zellbereiche in den Beispieldaten genannt.

A1: Name B1: Sales C1: Menge
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

17: Auswählen der letzten Zelle einer Spalte mit aneinander grenzenden Daten

Verwenden Sie folgendes Beispiel, um die letzte Zelle in einer Spalte mit aneinander grenzenden Daten auszuwählen:
ActiveSheet.Range("a1").End(xlDown).Select
Wenn dieser Code mit der Beispieltabelle verwendet wird, wird die Zelle A4 ausgewählt.


18: Auswählen der leeren Zelle unten in einer Spalte mit aneinander grenzenden Daten

Verwenden Sie folgendes Beispiel, um die Zelle unter einem Bereich aneinander grenzender Zellen auszuwählen:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Wenn dieser Code mit der Beispieltabelle verwendet wird, wird die Zelle A5 ausgewählt.


19: Auswählen eines gesamten Bereichs aneinander grenzender Zellen in einer Spalte

Verwenden Sie eines der folgenden Beispiele, um einen Bereich aneinander grenzender Zellen in einer Spalte auszuwählen:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select

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

20: Auswählen eines gesamten Bereichs nicht aneinander grenzender Zellen in einer Spalte

Verwenden Sie eines der folgenden Beispiele, um einen Bereich nicht aneinander grenzender Zellen auszuwählen:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select

- oder -
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
End(xlUp).Address).Select
Wenn dieser Code mit der Beispieltabelle verwendet wird, werden die Zellen A1 bis A6 ausgewählt.

21: Auswählen eines rechteckigen Zellbereichs

Verwenden Sie die CurrentRegion-Methode, um einen rechteckigen Zellbereich um eine Zelle auszuwählen. Der mithilfe der CurrentRegion-Methode ausgewählte Bereich wird durch eine beliebige Kombination leerer Zeilen und Spalten begrenzt. Das folgende Beispiel zeigt die Verwendung der CurrentRegion-Methode:
ActiveSheet.Range("a1").CurrentRegion.Select
Mit diesem Code werden die Zellen A1 bis C4 ausgewählt. Sie können auch die nachfolgenden Beispiele verwenden, um denselben Zellbereich auszuwählen:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select

- oder -
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
Nehmen wir an, Sie möchten die Zellen von A1 bis C6 auswählen. Bei diesem Beispiel funktioniert die CurrentRegion-Methode nicht, da die Zeile 5 leer ist. Mithilfe der folgenden Beispiele werden alle Zellen ausgewählt:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

- oder -
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. Auswählen mehrerer nicht aneinander grenzender Spalten unterschiedlicher Länge

Verwenden Sie die folgende Beispieltabelle und das folgende Beispielmakro, um mehrere nicht aneinander grenzende Spalten unterschiedlicher Länge auszuwählen:

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 bis A3 und C1 bis C6 ausgewählt.

Hinweise zu den Beispielen

  • Die ActiveSheet-Eigenschaft kann normalerweise weggelassen werden, da sie mit einbezogen wird, wenn kein bestimmtes Arbeitsblatt angegeben wurde. Anstelle von
    ActiveSheet.Range("D5").Select
    können Sie beispielsweise folgende Zeile verwenden:
    Range("D5").Select
  • Die ActiveWorkbook-Eigenschaft kann ebenfalls normalerweise weggelassen werden. Sofern keine bestimmte Arbeitsmappe angegeben wurde, wird die aktive Arbeitsmappe verwendet.
  • Wenn Sie die Application.Goto-Methode verwenden, um die Cells-Methode zweimal innerhalb der Range-Methode zu verwenden, wenn sich der ausgewählte Bereich in einem anderen Arbeitsblatt als dem aktiven Arbeitsblatt befindet, müssen Sie das Sheets-Objekt jeweils einschließen. Beispiel:
    Application.Goto Sheets("Sheet1").Range( _
    Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
    Sheets("Sheet1").Cells(4, 5)))
  • Für jedes in Anführungszeichen gesetzte Element (beispielsweise der benannte Bereich "Test") können Sie auch eine Variable mit einer Textzeichenfolge als Wert verwenden. Anstelle von
    ActiveWorkbook.Sheets("Sheet1").Activate
    können Sie beispielsweise folgende Zeile verwenden:
    ActiveWorkbook.Sheets(myVar).Activate
    Hierbei hat "myVar" den Wert "Sheet1".

Informationsquellen



Weitere Informationen zur Verwendung des Beispielcodes in diesem Artikel finden Sie im folgenden Artikel der Microsoft Knowledge Base:

290140 Ausführen des Beispielcodes aus Knowledge Base-Artikeln für Office XP-Programme