VBA EVALUATE()不当行为

时间:2016-02-08 14:09:45

标签: excel vba excel-vba

我有一组代码可以在工作表范围内的公式中查找vlookup并计算它们。这完美地工作,然后一天早上我进来了它没有。违规代码:

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并计算一切正常时,此代码总是拉NA,因为评估总是评估为ERROR 2042

我的问题是什么可能导致EVALUATE函数在vlookup毫无疑问可评估时总是评估为ERROR 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

的所需输出

1 个答案:

答案 0 :(得分:1)

Application.Evaluate有一个反对部分Worksheet.Evaluate - 如果你想确保你的字符串在特定工作表的上下文中被评估,你应该使用后者,并且不只是默认为运行代码时活动的工作表。

由于您已声明字符串sVLOOKUP包含正确的值,因此这似乎是您所看到的可能的解释。