Excel 2010自定义函数公式报错‘输入公式包含错误’的解决方法
解决Excel自定义VBA函数公式输入报错问题
最近在Excel 2010里调用自己写的VBA函数loopThroughFilesCount2时,遇到了和你一样的坑——输入公式=loopThroughFilesCount2("C:\Users\yalinbah\Desktop\20180131_120549\New folder\ayakkabı\","A2")后,直接弹出“The formula you typed contains an error”的提示,折腾了一会儿终于找到问题所在,分享给你:
问题根源&快速修复
1. 公式参数分隔符不匹配
Excel的公式参数分隔符是跟着系统区域设置走的,你的系统应该是把分号;作为参数分隔符,而不是默认的逗号,。原来的公式用逗号分隔两个参数,这就触发了语法错误。
修正后的正确公式:
=loopThroughFilesCount2("C:\Users\yalinbah\Desktop\20180131_120549\New folder\ayakkabı\";A2)
这里注意两个关键点:
- 把参数之间的逗号改成了分号
; - 第二个参数
A2不需要加引号,因为它是单元格引用,直接写单元格地址即可
2. VBA函数的稳定性优化(可选)
看了你的VBA代码,发现filesCount变量没有显式声明,虽然VBA支持隐式声明,但显式声明能避免很多莫名其妙的bug,建议在函数开头加上变量声明:
Function loopThroughFilesCount2(dirFolder As String, strToFind As String) As Double Dim filePath As Variant Dim filesCount As Double ' 新增:显式声明计数变量 filePath = Dir(dirFolder) While (filePath <> "") If InStr(filePath, strToFind) > 0 Then filesCount = filesCount + 1 End If filePath = Dir Wend loopThroughFilesCount2 = filesCount End Function
内容的提问来源于stack exchange,提问作者Bahadır Yalın
相关产品推荐
相关产品推荐

