Ich habe dieses Stück Code geschrieben, aber habe den zusätzlichen Füllstoff dazwischen ausgemerzt. Abhängig von den ausgewählten Zeitpunkten werden die entsprechenden Zeilen ausgeblendet.VBA-Code - Überspringe einige Teile, wenn einige andere ausgeführt werden
Container 1 wird immer gefüllt. Wenn jedoch kein anderer Container ausgewählt ist, möchte ich alle verbleibenden Zeilen ausblenden, ohne den Rest des Codes zu verarbeiten. Wenn also Container 1 und 2 ausgewählt sind, wird der Code für diese ausgeführt, ohne dass der Rest des Codes ausgeführt wird.
Das Umschreiben als Schleife wäre unglaublich komplex, da es so viele mögliche Zeitpunkte gibt, dass es eher darum geht, den Code zu überspringen, der nicht relevant ist. Fast wie eine Goto-Linie oder so? Ich weiß es nicht!
Gibt es eine andere Möglichkeit, diesen Code effizienter auszuführen, als die DisplayPageBreaks, ScreenUpdating und Enable Events vorübergehend zu deaktivieren? Auf der Seite wird keine Berechnung durchgeführt, nur Zeilen werden ausgeblendet.
Zum Beispiel, wenn Q26 leer ist (Kein Container 2) Ich möchte es an das Ende des Codes gehen, ohne etwas anderes zu verarbeiten, aber wie ich es geschrieben habe, verarbeitet es immer noch den Rest des Codes.
Danke für Ihre Hilfe
If Worksheets("StabDataCapture").Range("q26").Value = "" Then Worksheets("Template").Rows("142:1048576").EntireRow.Hidden = True Else
Vielen Dank für Ihre Hilfe!
Sub Containers()
Dim xPctComp As Integer
Application.StatusBar = "Container 1: " & _
Format(xPctComp, "##0%")
ActiveSheet.DisplayPageBreaks = False
Application.EnableEvents = False
Application.ScreenUpdating = False
'CONTAINER 1 ROW HIDES
'@@@@@@@@@@@@@@@@@@@@@@@@@@@ 60°C @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'Show/Hide [email protected]
If Worksheets("StabDataCapture").Range("B33").Value = "" Then
Worksheets("Template").Rows("8:8").EntireRow.Hidden = True
End If
Application.StatusBar = "Container 2: " & _
Format(xPctComp, "##25%")
If Worksheets("StabDataCapture").Range("q26").Value = "" Then Worksheets("Template").Rows("142:1048576").EntireRow.Hidden = True Else
'CONTAINER 2 ROW HIDES
'@@@@@@@@@@@@@@@@@@@@@@@@@@@ 60°C @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'Show/Hide [email protected]
If Worksheets("StabDataCapture").Range("P33").Value = "" Then
Worksheets("Template").Rows("146:146").EntireRow.Hidden = True
End If
Application.StatusBar = "Container 3: " & _
Format(xPctComp, "##50%")
'CONTAINER 3 ROW HIDES
If Worksheets("StabDataCapture").Range("c91").Value = "" Then Worksheets("Template").Rows("280:1048576").EntireRow.Hidden = True Else
'@@@@@@@@@@@@@@@@@@@@@@@@@@@ 60°C @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'Show/Hide [email protected]
If Worksheets("StabDataCapture").Range("B98").Value = "" Then
Worksheets("Template").Rows("284:284").EntireRow.Hidden = True
End If
Application.StatusBar = "Container 4: " & _
Format(xPctComp, "##75%")
If Worksheets("StabDataCapture").Range("q91").Value = "" Then Worksheets("Template").Rows("418:1048576").EntireRow.Hidden = True Else
'@@@@@@@@@@@@@@@@@@@@@@@@@@@ 60°C @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'Show/Hide [email protected]
If Worksheets("StabDataCapture").Range("P98").Value = "" Then
Worksheets("Template").Rows("422:422").EntireRow.Hidden = True
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.StatusBar = ""
End Sub
Sie könnten versuchen, 'GoTo' zu verwenden, aber es ist nicht sehr empfehlenswert ... Oder ordne einfach deinen Code mit mehr Logik an! Es wird keine Schleife benötigt, aber mit 'If's oder' Select's und richtigem Einrücken können Sie dies tun – R3uK
Verwenden von lokalen Variablen, z. w = Arbeitsblätter ("StabDataCapture") und spätere Referenzierungen (oder mit Blöcken) können eine sehr kleine Verbesserung darstellen (so klein, dass sie nur zählt, wenn diese Funktion für jede Änderung der ausgewählten Zelle aufgerufen wird). Ich würde auch Application.Calculation = xlManual versuchen, auch wenn Sie denken, dass es nicht viele Berechnungen gibt. Ich sehe jedoch nicht, warum dein Code langsam sein sollte. Und wie R3uK auch bemerkte, ist diese Einrückung schrecklich. – z32a7ul
Wenn Sie diese Funktion auch aus einer anderen aufrufen, speichern Sie den Wert von DisplayPageBreaks, EnableEvents usw. und stellen Sie das Original am Ende wieder her. Andernfalls kann der Aufrufer dieses Subs diese Optimierungen verlieren, wenn er sie auch verwendet. – z32a7ul