2017-05-31 124 views
1

我正試圖編寫一個只在規定的時間量之後在活動工作表之間更改的宏。使用VBA僅在活動工作表之間切換

我有幾個隱藏的工作表,目前,這段代碼會將我循環到最後一個可見工作表,然後在該工作表上暫停相同的時間量,以便在隱藏工作表中循環。所以我最終看到我的最後一張可見紙張比其他紙張長數倍。

這是我的代碼。

Public Sub Switch() 
Dim ws As Worksheet 

Do 
For Each ws In ThisWorkbook.Worksheets 
     ws.Activate 
     Application.Wait Now() + TimeValue("00:00:05") 
     DoEvents 
    Next ws 
Loop 


End Sub 

任何幫助將是驚人的!

回答

3

使用工作表的Visible屬性:

Public Sub Switch() 
    Dim ws As Worksheet 

    Do 
     For Each ws In ThisWorkbook.Worksheets 
      If ws.Visible = xlSheetVisible Then 
       'Only process things if the sheet is visible 
       ws.Activate 
       Application.Wait Now() + TimeValue("00:00:05") 
       DoEvents 
      End If 
     Next ws 
    Loop 
End Sub 
+0

什麼是'DoEvents'呢? – BruceWayne

+0

就是這樣!非常感謝。 –

+1

@BruceWayne - 不知道爲什麼OP有它,但我沒有去除它 – YowE3K