überraschende Optimierung ...
30.06.2015 17:06:18
Michael
Hi zusammen,
ich bitte das auszuprobieren:
Option Explicit
Sub Leere_Zeilen_ausblenden()
Dim iCounter&, letztes&
Dim welche As String
If MsgBox("Dieser Vorgang kann 30 - 60 Sekunden in Anspruch nehmen. Wollen Sie die Aktion jetzt _
ausführen?", _
vbQuestion + vbYesNo, "Aktion ausführen?") = vbYes Then
letztes = ActiveSheet.Index
Worksheets("Test2").Activate
Range("N1").Value = Timer
For iCounter = 8 To 145
If Cells(iCounter, 9).Value "" Then ' ***** 5 Sterne
If Cells(iCounter, 9).Value = 0 Then
welche = welche & iCounter & ":" & iCounter & ","
End If
End If
Next iCounter
If Len(welche) > 3 Then
welche = Mid(welche, 1, Len(welche) - 1)
Range(welche).EntireRow.Hidden = True
Range("N2").Value = Timer
Cells(3, 11).Value = "ausgeblendet"
Else
Range("N2").Value = 0
Cells(3, 11).Value = "keine Aktion"
End If
Range("K3").Select
Worksheets(letztes).Activate
End If
End Sub
Sub Leere_Zeilen_einblenden()
Dim letztes&
If MsgBox("Dieser Vorgang kann 30 - 60 Sekunden in Anspruch nehmen. Wollen Sie die Aktion jetzt _
ausführen?", _
vbQuestion + vbYesNo, "Aktion ausführen?") = vbYes Then
letztes = ActiveSheet.Index
Worksheets("Test2").Activate
Range("O1").Value = Timer
Rows("2:145").EntireRow.Hidden = False
Range("O2").Value = Timer
Cells(3, 11).Value = "eingeblendet"
Range("K3").Select
Worksheets(letztes).Activate
End If
End Sub
Die mit 5 Sternen markierte Zeile ist notwendig, weil der nächste If-Vergleich auch bei leeren Zellen 0 zurückgibt - an sich kein Problem, aber das Range-Objekt regt sich auf, wenn der String (welche) zu lang ist.
Könnte man auch anders gestalten, aber erst auf Anfrage.
Schöne Grüße,
Michael