Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA评估不';第一次似乎没有人工干预就无法工作_Excel_Vba_Type Mismatch_Evaluate - Fatal编程技术网

Excel VBA评估不';第一次似乎没有人工干预就无法工作

Excel VBA评估不';第一次似乎没有人工干预就无法工作,excel,vba,type-mismatch,evaluate,Excel,Vba,Type Mismatch,Evaluate,我面临着一个奇怪的问题。strFormula是一个带有公式的字符串。执行此代码时,我得到运行时错误13:类型不匹配。我检查了strFormula中的公式是否有效(我将其复制粘贴到excel单元格中&它计算并返回TRUE/FALSE)。此外,字符串的长度不超过255个字符,因为我认为Evaluate最多只能处理255个字符 'Reading the formula template from a cell strFormula = Trim(ThisWorkbook.Sheets("Validat

我面临着一个奇怪的问题。strFormula是一个带有公式的字符串。执行此代码时,我得到运行时错误13:类型不匹配。我检查了strFormula中的公式是否有效(我将其复制粘贴到excel单元格中&它计算并返回TRUE/FALSE)。此外,字符串的长度不超过255个字符,因为我认为Evaluate最多只能处理255个字符

'Reading the formula template from a cell
strFormula = Trim(ThisWorkbook.Sheets("Validation").Cells(1, 3))

'Replacing the R# in the formula with the Row# to build the actual formula to evaluate
strFormula = Replace(strFormula, "R#", iRowCounter)

blnTest = Evaluate(strFormula)
现在是奇怪的部分-当我得到类型不匹配错误时,如果我单击Debug,然后转到公式选项卡并单击“立即计算”或“计算表”,或者如果我在excel中的任何单元格中键入任何公式(例如=1+1),然后按F8或F5继续在调试模式下执行,则评估工作正常!(返回真/假&继续执行)。我检查了Calculation选项是否设置为Automatic,并且在代码中我没有修改它

你知道为什么Evaluate一开始不起作用吗?我试图在此之前放置一些伪(如下所示)Evaluate语句,看看这是否有帮助,但这些Evaluate语句工作正常&我的语句中出现了类型不匹配错误。我尝试将ActiveSheet.Calculate放在Evaluate语句之前,以强制Excel在执行实际评估之前进行计算,但这也没有帮助

temp = Evaluate("=1 * 1")
temp = Evaluate("=1 + 1")
blnTest = Evaluate(strFormula)

任何关于如何解决这个问题的建议都将非常好

我首先要确保使用
工作表.Evaluate
方法(在特定工作表的上下文中计算公式),而不是默认的
应用程序.Evaluate
(默认使用Activesheet的上下文)。还有助于展示一些您正在使用的公式类型的示例。我从“验证”工作表中读取的公式是“=或(T!BR#=”Bay Plan“,T!BR#=”Trip Plan”),其中T是同一工作簿中另一个工作表的名称。我将用行号替换“R#”,然后计算公式。谢谢@TimWilliams!我是一个新手&不太明白您使用工作表.Evaluate的意思。今天我突然想到你要我修改什么。我更改了代码,如下所示&它现在可以工作了。谢谢你的帮助<代码>此工作簿。工作表(“T”)。评估(标准公式)