VBA EVALUATE()错误行为
我有一套代码,在一张纸的范围内的公式中寻找vlookups并计算它们。这很有效,然后有一天早上我进来了,结果没有。这里有违规代码:VBA EVALUATE()错误行为,vba,excel,Vba,Excel,我有一套代码,在一张纸的范围内的公式中寻找vlookups并计算它们。这很有效,然后有一天早上我进来了,结果没有。这里有违规代码: sValue = Application.Evaluate(sVLOOKUP) If Len(sValue) = 0 Then sValue = "#N/A" 比如说 =VLOOKUP(Box,A1:B2,2,0) 在桌子上 A B Box 1 Car 2 但是,当在问题工作表中手动突出显示VLOOKUP并计算all时,此代码始终为NA,因为求值结果
sValue = Application.Evaluate(sVLOOKUP)
If Len(sValue) = 0 Then sValue = "#N/A"
比如说
=VLOOKUP(Box,A1:B2,2,0)
在桌子上
A B
Box 1
Car 2
但是,当在问题工作表中手动突出显示VLOOKUP并计算all时,此代码始终为NA,因为求值结果始终为错误2042
我的问题是,当vlookup毫无疑问是可计算的时,是什么导致计算函数总是计算到错误2042(NA)?
编辑
似乎根本的问题是,我正在使用一个表单工具来引用所需的子对象
Dim OutputFolder As String, GetBook As String, BookCopy As String, wb As Workbook
OutputFolder = GetFolder("C:\")
GetBook = ActiveWorkbook.Name
BookCopy = OutputFolder & "\Client Copy " & GetBook
ActiveWorkbook.SaveCopyAs BookCopy
Set wb = Workbooks.Open(BookCopy)
Dim wsDataLoad As Worksheet, wsEconomics As Worksheet, wsUI As Worksheet, wsTypeCurves As Worksheet, wsSWM As Worksheet, wsCC As Worksheet, wsSummary As Worksheet
Set wsDataLoad = wb.Sheets("DataLoad")
与formtool的交互与运行sub直接改变sub
应用程序的所需输出。Evaluate
有一个计数器部分工作表。Evaluate
-如果要确保在特定工作表的上下文中对字符串进行评估,则应使用后者,并且在运行代码时不只是默认为任何工作表都处于活动状态
由于您已声明字符串
sVLOOKUP
包含正确的值,这似乎是对您所看到的情况的可能解释。请在仍然产生错误的情况下,将您的问题细化到尽可能小的程度,然后显示产生错误的样本数据。@Grade'Eh'Bacon简单地说,所有VLOOKUPS的计算结果都是错误2042,如果它们不在工作表计算中,我不确定这有什么不明确的地方?这个问题很大胆。。。。根据文档,评估应该和按表中的f9操作一样,我没有说这是含糊不清的。我所说的[好吧,我所暗示的]是,如果你没有花时间尝试将你的大部分代码最小化到重新产生错误的最小部分,那么这个网站的用户就不太可能尝试为你这样做。显示重新创建错误的数据样本可能会有所帮助。@evaluation(sVLOOKUP)根据请求为“Eh”Bacon打分。如果你的问题陈述是正确的,那么它将不起作用,因为你的VLOOKUP statement=VLOOKUP(Box,A1:B2,2,0)应该应用程序。Evaluate(sVLOOKUP)然后变成wsSWM.Evaluate(sVLOOKUP)??我不确定如何在语法上做你的建议修复了我的打字错误计算>>评估,但不确定你的评论到底在说什么?太棒了,这就是解决方案!这已经困扰了我一段时间了真的很感谢你的回复