Kann ich statt UsedRange eine festgelegte Range nehmen? Ich will ja Spalte für Spalte durchgehen (anstelle des "M" kommt nachher noch eine for-Schleife drumherum).
UsedRange gibt dir erstmal den genutzen Bereich vom jeweiligen Blatt zurück (bitte orientiere dich an meinem Beispiel). Mit SpecialCells() werden aus diesem Bereich dann nur ganz spezielle Zellen zurück gegeben - in unserem Fall Zellen mit Gültigkeitskriterien. Du hast dann also ein Range-Objekt Instanz, durch die man mit ForEach Zelle für Zelle iteriert. Bei jeder wird geprüft, ob das Gültigkeitskriterium eine Liste ist. Jetzt brauchst du nur noch den dritten Code-Schnipsel von hier kopieren und in den If-Block einfügen; vntItems ist dann deine Kriterien-Liste.
Wo gibt es jetzt noch Probleme?
Grüße
PS: Du kannst auch gerne jede Spalte einzeln abgrasen, wenn du das willst.
Set rngValidations = Worksheets("Tabelle1").Columns("M").SpecialCells(xlCellTypeAllValidation)
Das ist deine Entscheidung und wirkt sich letztendlich auf die Laufgeschwindigkeit des Makros aus.
For Each rngColumn in Worksheets("Tabelle1").Range("E2:M100").Columns
Set rngValidations = rngColumn.SpecialCells(xlCellTypeAllValidation)
Next
|