在VLOOKUP函数中嵌入变量的VBA代码问题求助
解决VBA中VLOOKUP引用带单引号工作表名的变量问题
问题出在工作表名的单引号转义规则上!旧代码里的'TempArg''17'其实是Excel公式对包含单引号的工作表名TempArg'17的标准写法——当工作表名包含特殊字符(比如单引号、空格)时,必须用单引号把整个表名括起来,而表名本身的单引号需要用两个单引号转义才能被Excel识别。
你现在用变量temp存储的是TempArg'17,直接拼到公式里会变成'TempArg'17',这会让Excel误以为表名是TempArg,后面的17'是无效内容,自然无法正常运行。
修正后的代码
Dim temp As String Dim num As Integer '注意:VBA里没有Int类型,规范写法是Integer/Long num = 17 temp = "TempArg" & "'" & CStr(num) '建议用&连接字符串,比+更稳妥(+可能触发数值运算) '修改后的公式拼接逻辑 ActiveCell.FormulaR1C1 = _ "=VLOOKUP([@[" & Chr(10) & "Stevilka]],'" & Replace(temp, "'", "''") & "'!C[-16]:C[-17],2,FALSE)"
关键逻辑解释
Replace(temp, "'", "''"):把temp里的单个单引号替换成两个,让TempArg'17变成TempArg''17,符合Excel的转义规则- 前后再包裹一层单引号,最终公式里的表名部分就和旧代码完全一致:
'TempArg''17',Excel就能正确识别工作表了
内容的提问来源于stack exchange,提问作者rivaq45
相关产品推荐
相关产品推荐

