我寫這段代碼但燒燬了兩者之間的附加填料。根據選定的時間點,它將隱藏適當的行。VBA代碼 - 跳過一些地方,如果一些別人excecuted
容器1每時每刻都會有,但是,如果沒有選擇另一個容器中,我希望它可以隱藏所有剩餘的行而不處理代碼的其餘部分。因此,如果選擇容器1和2,它將運行這些代碼而不運行代碼的其餘部分。
,因爲有這麼多的可能的時間點,改寫本作爲循環將是極其複雜的,它更跳過不相關的代碼的問題。幾乎像goto線或什麼的?我不知道!
是否有任何其他的方式,使這個代碼的運行效率比暫時禁用DisplayPageBreaks,ScreenUpdating和啓用活動?沒有計算在頁面上執行,只有行隱藏。
例如,如果Q26是空白的(無容器2)我希望它去的代碼末尾,沒有處理任何東西,但我怎麼寫它,它仍然處理代碼的其餘部分。
感謝您的幫助
If Worksheets("StabDataCapture").Range("q26").Value = "" Then Worksheets("Template").Rows("142:1048576").EntireRow.Hidden = True Else
謝謝您的幫助!
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
你可以嘗試使用'GoTo',但這不是很推薦......或者只是用更多的邏輯重新排列你的代碼!不需要循環,但使用'If's或'Select's和正確的縮進,你可以這樣做 – R3uK
使用局部變量,例如w =工作表(「StabDataCapture」)並稍後引用它們(或With塊)可能會提供一個非常小的改進(只有在爲每個選定單元格的更改調用此函數時纔會計數)。我也會嘗試Application.Calculation = xlManual,即使你認爲沒有太多的計算。但是,我沒有看到爲什麼你的代碼應該很慢。正如R3uK也指出的那樣,這種縮進是可怕的。 – z32a7ul
如果您也從另一個調用此函數,則保存DisplayPageBreaks,EnableEvents等的值,並在最後將其恢復到原始值。否則,這個子的調用者可能會放棄這些優化,如果它也使用它們的話。 – z32a7ul