如何将输入框数据作为XLOOKUP的lookupValue?VBA报错求助
问题解决:VBA中XLOOKUP无法识别变量作为查找值的问题
问题原因
你当前的代码是把VBA变量名AlloySpec直接写进了公式字符串里,Excel会将其视为公式内的名称/单元格引用,而非变量存储的实际输入值,导致生成的公式里出现@AlloySpec而非具体的合金规格值。
修改后的代码
Dim AlloySpec As String AlloySpec = Application.InputBox(Prompt:="Enter Alloy Spec. Eg: 304 or 2205", Title:="ENTER DATA", Type:=2) Dim AlloyR As Range Set AlloyR = Application.InputBox(Prompt:="Range of Alloy", Title:="SELECT RANGE", Type:=8) ' 将变量值拼接进公式,给字符串查找值添加公式所需的双引号 AlloyR.FormulaR1C1 = "=XLOOKUP(""" & AlloySpec & """,R8C1:R15C1,R8C2:R15C2,""not found"",0,1)"
关键修改点
- 变量值拼接:用
""" & AlloySpec & """替代原代码中的AlloySpec,VBA会把变量存储的实际值插入到公式字符串中,同时通过三重双引号(VBA中表示字符串内的单个双引号)给查找值包裹公式所需的双引号,确保Excel公式能识别为字符串查找值。 - 使用
FormulaR1C1:因为你公式里用的是R1C1格式的单元格引用(R8C1:R15C1),用.FormulaR1C1赋值比.Value更匹配格式,避免引用样式自动转换的问题。
修改后,当你输入2205时,生成的公式会是=XLOOKUP("2205",$A$8:$A$15,$B$8:$B$15,"not found",0,1),XLOOKUP就能正确用输入的规格值作为查找值了。
内容的提问来源于stack exchange,提问作者Naady
相关产品推荐
相关产品推荐

