2016-12-15 40 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