SpecialCells

Um Zellen, nach verschiedenen Kriterien auszuwählen bietet Excel eine VBA Eigenschaft des Range Objekts, die die Suche sehr stark beschleunigt und vereinfacht.

SpecialCells beziehen sich immer auf einen Range Zellbereich.

Anbei ein Codebeispiel, wie man alle Zeilen löschen kann, die in Spalte A leer sind:

Auf folgende Eigenschaften kann geprüft werden:

xlCellTypeAllFormatConditions Zellen mit beliebigem Format

' Anzahl der Zellen mit bedingter Formatierung

Sub BedFormatCount()
Dim intCount As Integer
On Error Resume Next
' Fehlermeldung unterbinden,
' da es sonst zu einer Fehlermeldung kommt,
' wenn es keine Zellen mit bedingter Formatierung gibt
intCount = Cells.SpecialCells(xlCellTypeAllFormatConditions).Count
MsgBox intCount
On Error GoTo 0'Fehlermeldung wieder aktivieren
End Sub

xlCellTypeAllValidation Zellen mit Gültigkeitskriterien

' Zellen auswählen, die die gleichen Gültigkeitsregeln haben
' verglichen wird mit der ersten Zelle im gewählten Bereich
ActiveSheet.UsedRange.SpecialCells(xlCellTypeSameValidation).Select

xlCellTypeBlanks Leere Zellen

' Zeilen löschen die in Spalte A leer sind
ActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

' Alle Zellen löschen die leer sind
' von Peter Haserodt
' http://www.haserodt.de/
Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeBlanks).Delete xlShiftUp

xlCellTypeComments Zellen mit Anmerkungen

' Kommentare löschen die in Spalte A gefunden werden
Columns(1).SpecialCells(xlCellTypeComments).Comment.Delete

xlCellTypeConstants Zellen mit Konstanten

' Zeilen löschen die in Spalte A nicht numerisch sind
Columns(1).SpecialCells(xlCellTypeConstants, 22).EntireRow.Delete

xlCellTypeFormulas Zellen mit Formeln

' Funktionen löschen, die Fehler ergeben, sehr praktisch
' wenn eine Zelle gelöscht wurde, die zu Fehlern geführt hat
Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors).Clear

xlCellTypeLastCell Die letzte Zelle im benutzten Bereich

' Zellen auswählen die in Spalte A leer sind
ActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

xlCellTypeSameFormatConditions Zellen mit gleichem Format

' Zellen auswählen, die die gleiche bedingte Formatierung haben,
'
die die aktuell ausgewählte Zelle hat
Sub GleicheBedingteFormatierungSuchen()
ActiveCell.SpecialCells(xlCellTypeSameFormatConditions).Select
End Sub

Wenn in der aktiven Zelle eine bedingte Formatierung hinterlegt ist, werden alle Zellen ausgewählt, die die gleiche bedingte Formatierung aufweisen. Andernfalls entsteht der Laufzeitfehler 1004, den man dann noch entsprechend abfangen müsste.

xlCellTypeSameValidation Zellen mit gleichen Gültigkeitskriterien

' Zellen auswählen, die die gleiche Gültigkeitsregel haben
' sehr praktisch, wenn man die entsprechenden Zellen sucht
Sub Test_Validation()
Dim rngCells As Range
Set rngCells = Range("A:A")' Es wird mit A1 verglichen
Set rngCells = rngCells.SpecialCells(xlCellTypeSameValidation)
If Not rngCells Is Nothing Then
rngCells.Select
End If
End Sub

xlCellTypeVisible Alle sichtbaren Zellen

' alle sichtbaren Zeilen kopieren
' erstellt von Hajo.Ziplies@web.de 07.10.03
' http://home.media-n.de/ziplies/
Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("Tabelle2").Range("A1")

Weitere Infos kann man über die eingebaute Hilfe erfahren. Die Hilfe erreicht man, wenn man mit der Maus auf SpecialCells klickt und dann F1 drückt.

 

Diese Seite ist Teil der Webseite http://www.nikolai-stiehl.de

Themenbereich: MS Excel.

Sollten Sie diese Seite nicht innerhalb eines Framesets angezeigt bekommen,
gelangen Sie über diesen Link auf den Einstiegsframe.