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 Sollten Sie diese Seite nicht innerhalb eines Framesets angezeigt bekommen, |