运行时错误“91”:对象变量或未设置块变量

Posted

技术标签:

【中文标题】运行时错误“91”:对象变量或未设置块变量【英文标题】:Run-time error '91': Object variable or With block variable not set 【发布时间】:2015-08-20 19:03:25 【问题描述】:

希望您能帮助我调试此错误。宏以前运行良好,我没有进行任何更改,现在面临变量错误 - 运行时错误'91':对象变量或未设置块变量。

在 dubug 上突出显示以下行:ValueFound = FindValue(RangeHeader.Text,TableCollection)。 FindValue 是另一个函数。

功能A:

Function Alpha(aTableCollection As Collection)

    Dim Sheet As Worksheet
    Dim RangeHeader As Range
    Dim RangeValue As Range
    Dim TableCollection As Collection
    Dim SupplierName As String
    Dim Counter
    Dim endColumn As Integer

    Set TableCollection = New Collection
    Set TableCollection = aTableCollection

    SupplierName = aTableCollection.Item(4)

    With Sheets("Suppliers").Range("B:B")
        Set Rng = .Find(What:=SupplierName, After:=.Cells(.Cells.count), LookIn:=xlValues, LookAt:= _
                    xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        Set Sheet = ActiveSheet
        Set RangeHeader = Range("A1")
    End With

    ValueFound = Beta(RangeHeader.Text, TableCollection)

    RangeValue.Offset(0, 1).FormulaR1C1 = ValueFound

    endColumn = Sheet.UsedRange.Columns.count

    Counter = 1 
    While Counter < endColumn 
        ValueFound = Beta(RangeHeader.Offset(0, Counter).Text, TableCollection)
        RangeValue.Offset(0, Counter).FormulaR1C1 = ValueFound
    Counter = Counter + 1 
    Wend

End Function

功能测试版:

Function Beta(aNameToFind As Variant, aCollection As Collection) As Variant

Dim MyObject As Variant
Dim count As Integer

For Each MyObject In aCollection    
    count = count + 1
    If aNameToFind = MyObject Then   
        count = count + 1
        Beta = aCollection.Item(count)  
        Exit For
    End If 
Next

End Function

如果有人对如何修复此错误有任何想法(并且可能知道为什么它最近才开始显示此错误),我们将不胜感激。

需要任何说明,尽管问。

提前致谢!

【问题讨论】:

我在你的代码中没有看到ValueFound = FindValue(RangeHeader.Text,TableCollection) 很确定他的意思是:ValueFound = Beta(RangeHeader.Text, TableCollection) 【参考方案1】:

我怀疑问题出在 Beta() 中。

这行包含两次:

count = count + 1

我怀疑这会导致从集合中返回错误的项目。

尝试删除上述行的第二次出现。

实际上,Beta() 例程似乎完全没有意义。为什么不直接跳过这一行:

ValueFound = TableCollection(RangeHeader.Text)

【讨论】:

以上是关于运行时错误“91”:对象变量或未设置块变量的主要内容,如果未能解决你的问题,请参考以下文章

Excel vba 运行时错误 91 对象变量或未设置块

运行时错误 91。未设置对象变量或块变量

解决 Excel VBA 文本文件导出中的运行时 91 错误

EBS WEBADI 下载模板提示 Visual Basic 运行时错误 ‘91‘ 对象变量或With块变量未设置

类函数中的错误 91

循环播放页面时出错。返回对象变量或未设置块变量