我試圖循環遍歷工作簿中的所有工作表。我有以下代碼,它工作得很好;唯一的問題是,它只有在第一張紙上啓動宏時纔有效;如果我在任何其他地方做它,它會在第一次循環後停止。遍歷所有工作表
WS_Count = ActiveWorkbook.Worksheets.Count
For i = 1 To WS_Count
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.ActiveSheet
'if sheet contains evdre
Set c = ws1.Cells.Find("blabla")
If Not c Is Nothing Then
'do things
End If
Next i
我不知道這個問題是由於一個事實,即宏應該總是在第一頁,或者如果啓動有一些錯誤代碼。 感謝您的任何幫助
編輯 在'做某事我實際上創造隱藏的牀單(我活躍在一個隱藏的副本);這可以讓計數陷入困境嗎?並因此只能在第一張工作
是我還是沒有任何部分工作表在此代碼中更改? – Poof
儘管iDevlop的回答可能是更有效的方法,但如果您在代碼中更改了一行,它將適用於您:只要在您的「做事情」中設置ws1 = ThisWorbook.Sheets(I)'適當引用'ws1'。 –
是的,你的代碼中的問題只是,ActiveSheet不會改變,所以它在同一張表上多次循環。你可以a)改變它像斯科特解釋或b)使用基於對象的循環,如iDevlop explainend。 b)是更好的解決方案,因爲它更易於閱讀和擴展。 –