VBA代码中FormulaLocal赋值语句报错,请求排查问题原因
代码报错排查方案
分隔符与区域设置不匹配
FormulaLocal会使用Excel本地语言的参数分隔符,若你当前Excel的区域设置默认用逗号(,)作为分隔符(比如英文系统),但代码里用了分号(;),就会触发公式语法错误。可以改成对应分隔符,或者改用Formula属性(用英文逗号分隔,Excel会自动转换为本地格式):ws.Range("K" & i).Formula = "=IF(COUNTIF($C$2:C" & i & ",C" & i & ")=1,ROW(),"""")"引号转义错误
原代码中空字符串的转义写法有误,VBA中要在字符串内表示一个双引号,需要用两个双引号。公式里的空字符串"",在VBA字符串里应该写成"""",原代码的"""")会导致字符串未正确闭合,引发编译错误。修正后代码:ws.Range("K" & i).FormulaLocal = "=IF(COUNTIF($C$2:C" & i & ";C" & i & ")=1;ROW();"""")"ws对象未初始化
检查代码中是否给ws赋值了有效的Worksheet对象,比如有没有类似Set ws = ThisWorkbook.Worksheets("你的工作表名")的代码,如果ws为Nothing,访问它的Range属性会直接报错。函数名与本地语言不匹配
若你的Excel是非英文版本(比如中文),FormulaLocal要求使用本地语言的函数名,比如中文环境下需用IF而非小写if,如果混用英文函数名可能无法被识别,需改成对应本地语言的函数名。
内容的提问来源于stack exchange,提问作者Umutins62
相关产品推荐
相关产品推荐

