Vba 简单范围上的应用程序定义错误

Vba 简单范围上的应用程序定义错误,vba,excel,Vba,Excel,我尝试调试这段代码已经有一段时间了,有人知道其中的问题是什么吗 代码: 错误(突出显示以字段列表()开头的行): 即时窗口: ?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 我认为原因很简单。代码中的错误是,单元格单元格(2,1)和单

我尝试调试这段代码已经有一段时间了,有人知道其中的问题是什么吗

代码:

错误(突出显示以
字段列表()开头的行
):

即时窗口:

?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

我认为原因很简单。代码中的错误是,单元格
单元格(2,1)
单元格(最后一个字段,1)
未完全限定。出现此错误是因为代码运行时,
Summary\u File.Sheets(“设置”)
未处于活动状态。因此,人们应该始终完全限定对象

试试这个。请注意下面代码中它们前面的

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)。行
您可能最终选择整个列!如果您只想选择到最后一行,那么您可能希望看到

您需要在每次调用
单元格之前放置
摘要文件.Sheets(“设置”)
。如果您只是将
单元格
,Excel会将其解释为活动工作表中的单元格,即使它位于范围正确的
范围
函数的参数中。将范围指定给数组时没有括号将其更改为
字段列表=摘要文件.Sheets(“设置”)。范围(单元格(2,1),单元格(最后一个字段,1))
感谢输入人员这看起来像是一个进步,但在包含了两个解决方案后出现了一个新错误运行时错误13:Tyep mistchy由于没有添加
.Value
,您的类型不匹配。看看我贴的答案。您可能需要刷新页面还有一个提示:尽量避免使用
.End(xlDown)。行
您可能会选择整个列!如果您只想选择到最后一行,那么您可能希望看到我希望它是那么简单,在rdhs发布的注释中类似的解决方案,但我复制并粘贴了您的解决方案,我想它取得了进展,因为我得到了“运行时错误13:类型不匹配”。所以这并不是那么简单,但是非常感谢。对不起,那是个错误。非常感谢:)
?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
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