Problem Makrolaufzeit
07.05.2006 19:26:00
SteffenS
ich habe ein Makro welches unter bestimmten Bedingungen Zeilen ein- bzw. ausblendet.
Mein Problem ist, dass wenn ich die Arbeitsmappe wo das Makro angewandt wird öffne und Makro starte ist es innerhalb von 1 sec. durch.
starte ich das Makro dann nochmals, dauert es 45 sec.
Woran kann dies liegen ich weiss nicht mehr was ich da tun soll.
Mein Code sieht folgendermaßen aus, wobei nur die Do Schleife so lang braucht.
'Änderungen ausschalten
Application.ScreenUpdating = False
'Schutz aufheben
schutz_aufheben_only
Dim stati As Long
If marke_1.Value = True Then
stati = 1
ElseIf marke_2.Value = True Then
stati = 2
ElseIf all_marken.Value = True Then
stati = 5
ElseIf gesamtansicht.Value = True Then
stati = 4
Else
stati = 9
End If
'Berechnung aus
Application.Calculation = xlManual
'Bereich ein-/ausblenden
Dim lgZeile As Integer
lgZeile = 8
Do
'Zeile einblenden
Rows(lgZeile).EntireRow.Hidden = False
If Cells(lgZeile, 256) = stati Then Rows(lgZeile).EntireRow.Hidden = False
If Cells(lgZeile, 256) stati Then Rows(lgZeile).EntireRow.Hidden = True
If Cells(lgZeile, 256) = "" Or Cells(lgZeile, 256) = "9" Then Rows(lgZeile).EntireRow.Hidden = False
'Alles einblenden bei Gesamtansicht
If stati = 4 Then Rows(lgZeile).EntireRow.Hidden = False
'Markenwechsel beachten
If marke_1.Enabled = False And Cells(lgZeile, 256) = 1 Then Rows(lgZeile).EntireRow.Hidden = True
If marke_2.Enabled = False And Cells(lgZeile, 256) = 2 Then Rows(lgZeile).EntireRow.Hidden = True
'Option alles ausblenden
If stati = 9 And (Cells(lgZeile, 256).Value "" Or Cells(lgZeile, 256).Value = "9") Then
Rows(lgZeile).EntireRow.Hidden = True
End If
If stati = 9 And Cells(lgZeile, 1).Value = "-" Then
Cells(lgZeile, 1).Value = "+"
ElseIf Cells(lgZeile, 1).Value = "+" Then
Cells(lgZeile, 1).Value = "-"
End If
lgZeile = lgZeile + 1
Loop Until lgZeile = 531
'Berechnung ein
Application.Calculation = xlAutomatic
'Application.Calculate
'Wert in Blatt eintragen
Select Case stati
Case 1
Range("C6").Value = bez_01.Caption
Case 2
Range("C6").Value = bez_02.Caption
Case 5
Range("C6").Value = bez_03.Caption
Case 4
Range("C6").Value = bez_04.Caption
Case 9
Range("C6").Value = bez_05.Caption
End Select
'Stati & Format für Symbolleiste setzen
If stati "9" Then
Range("A1").Value = "-"
Else
Range("A1").Value = "+"
End If
Range("A1").NumberFormat = ";;;"
'seitenwechsel setzen
seitenwechsel_setzen (stati)
'Schutz setzen
schutz_setzen_only
'Änderungen wieder einblenden
Application.ScreenUpdating = True
'UF ausblenden
Unload Me
'Bildschirm rücksetzen
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 1
Range("B2").Select
raus:
'Symbolleiste neu erzeugen
SYMBERZ
'Änderungen wieder einblenden
Application.ScreenUpdating = True
End Sub
Danke im Voraus.
MFG
Steffen Schmerler