Auswählen eines Bereichs
In diesen Beispielen wird gezeigt, wie Sie den verwendeten Bereich auswählen, der formatierte Zellen enthält, die keine Daten enthalten, und wie Sie einen Datenbereich auswählen, der Zellen enthält, die tatsächliche Daten enthalten.
Beispielcode bereitgestellt von: Tom Urtis, Atlas Programming Management
In diesem Beispiel wird gezeigt, wie Sie den verwendeten Bereich auf dem aktuellen Blatt auswählen, der formatierte Zellen enthält, die keine Daten enthalten, indem Sie die UsedRange-Eigenschaft des Worksheet-Objekts und die Select-Methode des Range-Objekts verwenden. Dann wird dem Benutzer die Adresse des Bereichs angezeigt.
Sub SelectUsedRange()
ActiveSheet.UsedRange.Select
MsgBox "The used range address is " & ActiveSheet.UsedRange.Address(0, 0) & ".", 64, "Used range address:"
End Sub
Dieses Beispiel zeigt, wie Sie einen in Zelle A1 beginnenden Datenbereich im aktuellen Arbeitsblatt auswählen und dem Benutzer die Adresse des Bereichs anzeigen. Der Datenbereich enthält keine Zellen, die formatiert sind und keine Daten enthalten. Um den Datenbereich abzurufen, sucht dieses Beispiel die letzte Zeile und die letzte Spalte, die tatsächliche Daten enthält, mithilfe der Find-Methode des Range-Objekts .
Sub SelectDataRange()
Dim LastRow As Long, LastColumn As Long
LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Range("A1").Resize(LastRow, LastColumn).Select
MsgBox "The data range address is " & Selection.Address(0, 0) & ".", 64, "Data-containing range address:"
End Sub
In diesem Beispiel wird gezeigt, wie Sie einen Datenbereich auf dem aktuellen Blatt auswählen, wenn Sie die Startposition nicht kennen, und dem Benutzer die Adresse des Bereichs anzeigen. Der Datenbereich enthält keine Zellen, die formatiert sind und keine Daten enthalten. Um den Datenbereich abzurufen, sucht dieses Beispiel die erste und letzte Zeile und Spalte, die tatsächliche Daten enthalten, mithilfe der Find-Methode des Range-Objekts .
Sub UnknownRange()
If WorksheetFunction.CountA(Cells) = 0 Then
MsgBox "There is no range to be selected.", , "No cells contain any values."
Exit Sub
Else
Dim FirstRow&, FirstCol&, LastRow&, LastCol&
Dim myUsedRange As Range
FirstRow = Cells.Find(What:="*", SearchDirection:=xlNext, SearchOrder:=xlByRows).Row
On Error Resume Next
FirstCol = Cells.Find(What:="*", SearchDirection:=xlNext, SearchOrder:=xlByColumns).Column
If Err.Number <> 0 Then
Err.Clear
MsgBox _
"There are horizontally merged cells on the sheet" & vbCrLf & _
"that should be removed in order to locate the range.", 64, "Please unmerge all cells."
Exit Sub
End If
LastRow = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
LastCol = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
Set myUsedRange = Range(Cells(FirstRow, FirstCol), Cells(LastRow, LastCol))
myUsedRange.Select
MsgBox "The data range on this worksheet is " & myUsedRange.Address(0, 0) & ".", 64, "Range address:"
End If
End Sub
MVP Tom Urtis ist Gründer von Atlas Programming Management, einem im Silicon Valley ansässigen Full-Service-Unternehmen, das Microsoft Office- und Excel-Unternehmenslösungen entwickelt. Tom Urtis hat mehr als 25 Jahre Erfahrung in Unternehmensführung und der Entwicklung von Microsoft Office-Anwendungen und ist Mitautor von „Holy Macros! It's 2,500 Excel VBA Examples“.
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.