FormulaLocal和Formula的区分

Excel的功能的确相当强大,难怪一统江湖。但是搞不懂的就是为什么VBA的开发环境如此恶劣,相比现在流行开发环境Eclipse和VS2005+来说简直就是梦魇,即使与Javascript比起来都显得弱一些。当然调试好像还是方便一点,毕竟不用像javascript那样总要打开浏览器才能调试。当然不知道现在新的有没有强大到更java,c++之类的调试那样。

 

言归正传。Excel中某个Cell的Format属性(Cell.NumberFormat)设置成Text(即Cell.NumberFormat="@")的时候,即使输入公式,公式也不会计算。也就是说,把Cell中所有的字符都当作文本处理了。怎么才能用VBA把它的公式能够变成计算呢?(你不用关心为什么会有这么别扭的需求,我们实际的项目中的确需要这样)。

 

显然我想到的是如果Cell的format是Text并且含有公式的话,那么就会把它的format改成General,然后公式重新赋值一下:

       if cell.NumberFormat = "@" then

            cell.NumberFormat = "General"

            cell.Formula = cell.Formula          '一定要重新赋值才会运算

       end if

 

看起来应该没有问题了,可是实际运行时在重新赋值Formula时却抛出了1004 err。发现网上有人说用FormulaLocal试一下,即

 

           cell.FormulaLocal = cell.Formula  

 

还果然正确了。但是为什么呢?Google一下才发现有这么一种说法:

 

With Formula you have to use American syntax (commas, function names etc) but with FormulaLocal you should be able to use the local equivalents, so the translation issues would go away.

 

而我机器上设置的是Reginal and Setting设置的语言是French,所以cell.Formula都是用";"分隔参数的,所以第一种方法会报错,因为Formula属性不识别法文的公式。而设置FormulaLocal的时候则会识别法文的公式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值