我的项目具有导入功能,可以将与该问题没有直接关系的信息填写到我的工作表中。 B20是用户选择的下拉框。 C20具有公式=IF(B20<>"",CoFunction(B20),"")
,其中包含一个自定义函数,该函数在用户选择B20中的某些内容后运行。
我的问题是,在用户导入此信息后,它会正确填写所有信息,但C20中的值不会更新。自定义功能无法运行。
我尝试了许多解决方案来进行计算,唯一有效的方法是激活工作表,然后将B20的值设置为其自身。我的问题是,是否有人知道这样做的更好方法。也可以通过在B20中选择所需的值来手动完成。
Function COFunction(range1 As Range)
'Application.Volatile
If InStr(range1, "Panel") Then
COFunction = [VLOOKUP(B20,'Quote Sheet'!B13:C23,2,0) - 'Quote Sheet'!E50]
Exit Function
Else
Address = Replace(range1, Chr(34), Chr(34) & Chr(34)) 'Chr(34) is a double quote (")
COFunction = Evaluate("VLOOKUP(""" & Address & """, 'Prices'!A15:B150,2,0)")
Exit Function
End If
End Function
答案 0 :(得分:0)
快速解决方法:完成数据导入操作后,按F9
(以强制Excel重新计算带有公式的所有单元格)。
更清洁的解决方案:在执行数据导入操作的VBA子例程的末尾添加行Application.Calculate
。
答案 1 :(得分:0)
我知道了。我在vlookup中的B20没有指向特定的工作表。一旦我更改了它,它就可以正常工作。谢谢大家的建议。