应用程序在简单范围上定义了错误

我试图debugging这段代码已经有相当长的一段时间了,有谁知道它有什么问题?

码:

Sub Find_Field_List() Dim Last_Field As Integer Dim Field_List() As Variant Last_Field = Summary_File.Sheets("Settings").Cells(1, 1).End(xlDown).Row Field_List() = Summary_File.Sheets("Settings").Range(Cells(2, 1), Cells(Last_Field, 1)) End Sub 

错误(突出显示以Field_List()开头的行):

 RunTime Error 1004 Application-Defined or Object-Defined Error 

即时窗口:

 ?Summary_file.Sheets(2).Name Settings Split MBSA.xlsm ?Range(Cells(2,1),Cells(5,1)).Count 4 ?Last_Field 5 ?Summary_File.Sheets(2).Range(Cells(1,1)) Fields 

原因很简单,在我看来。 您的代码错误是单元Cells(2, 1)Cells(Last_Field, 1)不完全合格。 而且你得到这个错误,因为在代码运行时, Summary_File.Sheets("Settings")是不活动的。 因此,人们应该始终充分的资格对象。

尝试这个。 注意下面代码中的DOT

 Sub Find_Field_List() Dim Last_Field As Integer Dim Field_List() As Variant With Summary_File.Sheets("Settings") Last_Field = .Cells(1, 1).End(xlDown).Row Field_List = .Range(.Cells(2, 1), .Cells(Last_Field, 1)).Value End With End Sub 

编辑:

还有一个提示:尽量避免使用.End(xlDown).Row您可能会select整个列! 如果你只想select最后一行,那么你可能想看到这个