Hallo Danni,
mal was Grundsätzliches: Verbundene Zellen sind Schrott, die machen nur Theater. Die braucht kein Mensch. Wenn du die gleiche Optik wie bei verbundenen Zellen haben willst, dann schreib mal etwas in Zelle A1. Dann A1 bis C1 markieren, Rechtsklick, Zellen formatieren, Ausrichtung, Horizontal, über Auswahl zentrieren. Ergebnis, gleiche Optik wie bei verbundenen Zellen, aber ohne die Probleme von verbundenen Zellen.
Und jetzt zum Code:
Bei verbundenen Zellen muss ich mit einer Schleife über alle Zellen des jeweiligen Arbeitsblattes laufen, die Zelle dann jeweils prüfen ob es sich um eine verbundene Zelle handelt und wenn ja, dann die Zeile löschen.
Und das bei 300 Blättern. Wie groß dein Datenbereich in den einzelnen Blättern ist, weiß ich nicht.
Von daher kann ich dir auch nicht sagen, ob das Geschwindigkeitsmäßig in Ordnung ist. Teste mal.
Option Explicit
Public Sub Test()
Dim loZeile As Long, loSpalte As Long
Dim raBereich As Range, raBereich1 As Range, raZelle As Range
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each ws In ThisWorkbook.Worksheets
With ws.UsedRange
loZeile = .Rows.Count
loSpalte = .Columns.Count
Set raBereich = .Range(.Cells(2, 1), .Cells(loZeile, loSpalte))
For Each raZelle In raBereich
If raZelle.MergeCells = True Then
raZelle.EntireRow.Delete
End If
Next raZelle
Set raBereich1 = .Range(.Cells(1, 5), .Cells(loZeile, 5))
raBereich1.FormulaLocal = "=WENNFEHLER(SVERWEIS(A1;A:B;2;Falsch);"""")"
raBereich1.Value = raBereich1.Value
.Range("C:D").EntireColumn.Delete
End With
Next ws
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Set raBereich = Nothing
Set raBereich1 = Nothing
End Sub
Gruß Werner
|