我有一個程序開始下面的代碼:VBA工作表自動化錯誤
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Set ws1 = Workbooks.Open(ThisWorkbook.Sheets(1).[b4]).Sheets(1)
Set ws2 = Workbooks.Open(ThisWorkbook.Sheets(1).[b6]).Sheets(1)
Set ws3 = Workbooks.Open(ThisWorkbook.Sheets(1).[b8]).Sheets(1)
ws1.Move after:=ThisWorkbook.Sheets("MAIN")
ws2.Move after:=ThisWorkbook.Sheets("MAIN")
ws3.Move after:=ThisWorkbook.Sheets("MAIN")
'// remove redundant data
With ws1
With .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
...
似乎一切都很好,直到第二With
塊,當我得到一個自動化錯誤:
Run-time error '-2147221080 (800401a8)':
Automation Error
每的文件是帶有單張紙的CSV文件,如果我在當地人窗口中查看它們,他們會按照我的預期顯示爲Worksheet/Sheet1
。然而,一旦我將表單移動到ThisWorkbook
,我注意到類型更改爲Worksheet/Worksheet
,我不再使用各自的變量引用ws1
,ws2
或ws3
。這些變量在本地窗口中顯示爲工作表對象,並且似乎設置爲一個對象,但是當我展開該變量的節點時,它僅表示<No Variables>
。
我還沒有在VBA中見過這種行爲,所以任何解釋或建議將不勝感激。
在此先感謝。
是不是傻的東西像WS1不受關注? – 99moorem
@ 99moorem不應該有所作爲,因爲我指的是在內存中設置的對象,但仍然無法工作 - 它似乎在保持指向對象的指針,而不是它的任何屬性或方法。非常奇怪... –
你可以在出現錯誤後立即在窗口中輸入(「A2:A」&.Cells(.Rows.Count,1).End(xlUp).Row).address嗎?例如你可以手動重現嗎? – 99moorem