运行时错误“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 错误