Hallo,
...wach nach meinem Nachtdients.
Deine Laufvariable i ist in deinem Code weder deklariert, noch wird ihr ein Wert zugewiesen. Somit ist die Variable vom Typ Variant und die Varible i ist leer.
Zudem wird im Code diese Laufvariable nicht verändert ala For - Next.
Weiterhin muß beim Löschen via Laufvariable darauf geachtet werden, dass die For - Next Schleife rückwärts läuft, sonst werden bei aufeinanderfolgenden 0-en Zeilen übersprungen.
Ich persönlich würde die Zeilen, die gelöscht werden sollen, zunächst in einer Range Variablen sammeln und erst am Schluß in einem Aufwasch alle auf einmal löschen und nicht jede einzelne Zeile nacheindander löschen. Excel braucht für das Löschen von einem ganzen Bereich auf einmal etwa genau so viel Zeit wie für das Löschen einer einzelnen Zeile.
Public Sub aaa()
Dim raZelle As Range, raLöschen As Range
With Worksheets("Tabelle3")
.Range("A1") = "Isolationswiderstand"
.Range("A2:A157").FormulaR1C1 = "=VALUE(Tabelle1!RC23)"
For Each raZelle In .Range("A2:A157")
If raZelle.HasFormula Then
raZelle.Formula = Application.ConvertFormula(raZelle.Formula, xlA1, , xlAbsolute)
End If
If raZelle = 0 Then
If raLöschen Is Nothing Then
Set raLöschen = raZelle
Else
Set raLöschen = Union(raLöschen, raZelle)
End If
End If
Next
If Not raLöschen Is Nothing Then
raLöschen.EntireRow.Delete
End If
End With
Set raLöschen = Nothing
End Sub
Gruß Werner
|