[英]Runtime error 6 overflow when looping through worksheets
我使用下面的代碼刪除Excel中引用用戶共享文件的加載項的路徑。 它適用於某些文件,但在新文件中使用它並在打開時收到運行時錯誤6溢出錯誤。 它停在Cell Replace行上。
Private Sub Workbook_Open()
Dim i As Long
Dim strWorksheetName As String
strWorksheetName = ActiveSheet.Name
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
Sheets(i).Activate
If Sheets(i).Type = xlWorksheet Then
Cells.Replace What:="'c:\*xla*'!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End If
Next i
Application.DisplayAlerts = True
Sheets(strWorksheetName).Activate
End Sub
這可能是由於Workbook_Open事件在加載所有內容之前過快觸發而引起的。
如果您不嘗試激活工作表, 可能會有更好的運氣。 (激活它們會導致Excel必須顯示它們,它可能無法執行,因為它仍在執行其他操作。但是在不強制顯示工作表的情況下進行更改可能會讓它繼續執行它想要執行的操作。我猜,但是直到有人想出另一個解決方案,猜測就像任何東西一樣好!)
嘗試將代碼更改為:
Private Sub Workbook_Open()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws in Worksheets
ws.Cells.Replace What:="'c:\*xla*'!", _
Replacement:="", _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False, _
SearchFormat:=False, _
ReplaceFormat:=False
Next
Application.DisplayAlerts = True
End Sub
如果它有效,我會在這里留下答案。 如果沒有,我會刪除答案,其他人可以提出建議。
有可能一個或多個“紙張”不是。 可見 。 你不能。如果.Visible屬性為False或xlVeryHidden,則激活 'sheet'。
Option Explicit
Private Sub Workbook_Open()
Dim i As Long
Application.DisplayAlerts = False
For i = 1 To Worksheets.Count
With Worksheets(i)
.Cells.Replace What:="'c:\*xla*'!", _
Replacement:=vbNullString, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False, _
SearchFormat:=False, _
ReplaceFormat:=False
End With
Next i
End Sub
¹ 請參閱如何避免在Excel VBA宏中使用選擇以獲取更多方法, 以避免依賴選擇和激活來實現目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.