繁体   English   中英

Excel VBA - 下标超出范围错误(运行时:错误 9)

[英]Excel VBA - Subscript Out of Range Error (Run Time: Error 9)

提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文

尝试使用 Cells.Find Function 时出现运行时错误 (9) 下标超出范围

根据官方文档,只有几种可能的原因:

  • 引用了一个不存在的数组元素
  • 声明了一个数组但没有指定元素的数量
  • 引用了一个不存在的集合成员
  • 将 , 运算符与集合一起使用, ! 隐式指定一个键

这是一些与我相关的代码,也许有人有想法:

Dim Partner As Worksheet
Dim rangePartner As Range
Set Partner = Worksheets("Partner")
Set rangePartner = Range(Partner.Cells(2, 2), Partner.Cells(2, 2).End(xlDown))
    
Dim partnerid As String  
Dim segment As String
    
With rangePartner
    segment = Cells.Find(partnerid, LookIn:=Values, SearchOrder:=xlByRows).Offset(0, 3)
End With

另外,如果可以给我提示如何结合查找function避免偏移方法,请随时拍摄。 :)

正在浏览论坛和官方文档以排除原因。 检查作业和拼写 1000 次,但无法解决问题所在......

此外,我排除了 Offset 方法,以查看这是否会导致不同的错误。

Set rangePartner = Range(Partner.Cells(2, 2), Partner.Cells(2, 2).End(xlDown)) Range需要明确的父级 object 否则它会使用活动工作表,如果该工作表是不是Partner ,因为cells使用Partner

您的With当前什么都不做,您需要一个. cells的前面。

LookIn:=Values应该是xlvalues

不要在与Find相同的行中使用Range方法或属性,如果Find失败,程序将出错,因为它返回一个没有属性或方法的空 object。

我没有看到partnerid的值。

总的来说是这样的:

Dim Partner As Worksheet
Dim rangePartner As Range
Set Partner = Worksheets("Partner")

With Partner
    Set rangePartner = .Range(.Cells(2, 2), .Cells(2, 2).End(xlDown))
End With
Dim partnerid As String 'This still needs a value assigned
Dim segment As Range
    
With rangePartner
    Set segment = .Cells.Find(partnerid, LookIn:=xlValues, SearchOrder:=xlByRows)
    If Not segment Is Nothing Then
        Set segment = segment.Offset(0, 3)
    End If
End With
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM