2016-12-15 42 views
0

我正在嘗試做一件非常簡單的事情。我想將一系列動態值存儲在一個變量中。我使用下面的代碼:1004錯誤:無法重置變量

Sub Main() 
Set RawStuff = Worksheets("Data Input").Range(Range("A1"), Range("A1").End(xlDown)) 
End Sub 

第一次工作得很好,我第二次運行它產生以下錯誤:

Run-time error '1004': Application-defined or object-defined error

解決它的唯一方法是通過重新啓動的Excel /退出工作簿。

我的猜測是,問題是一旦設置了一個變量,它就不能被重置。作爲參考,我正在爲特定工作簿創建此宏。如果「數據輸入」不活躍,由於由默認Range("A1")將指活性片

回答

4
Set RawStuff = Worksheets("Data Input").Range(Range("A1"), Range("A1").End(xlDown)) 

這將失敗。

最好把所有呼叫資格Range()Cells()一個工作表對象:

With Worksheets("Data Input") 
    Set RawStuff = .Range(.Range("A1"), .Range("A1").End(xlDown)) 
End With 

上面的代碼應該無論工作這些工作是積極的(只要活動工作簿是正確的)

+0

因此,每次我必須存儲變量時,單元格所在的工作表必須被激活? – macworthy

+0

不是 - 只要你使用Range()或Cells(),你就必須具體指定,因爲默認情況下它們總是指向活動工作表 –

+0

Hey Tim,我想你錯過了一個'With'? – nbayly