dingsir的个人博客分享 http://blog.sciencenet.cn/u/dingsir

博文

工作表和VBA环境中ASC函数的差异(同名不同动作)

已有 6405 次阅读 2017-6-14 09:31 |个人分类:软件杂谈|系统分类:教学心得| ASC, 工作表函数, VBA函数, 同名函数, 不同功能

      一直没有注意EXCEL其实已经提供了半角和全角转换的函数,所以平时VBA代码中我都用Replace来处理自己设想到的各种情况,今天在百度时偶然发现,原来EXCEL已经提供了ASC函数可以转换。这个函数我不陌生,以前用过的。于是兴冲冲的把VBA代码的一串replace注释了,换上了新发现的ASC函数,结果一运行,出错啦!

怎么办? 凉拌,用调试。在ASC函数的下面一行设置断点一运行,原来ASC函数得到的结果是字串的首字母的ASCII值,这与百度告诉我的不一样啊。原因肯定是VBA的ASC函数与工作表的ASC函数行为不一致。

返回到工作表中,随便转入一个字串测试一下,果然工作表(即运行在电子表格中)的ASC函数是全角转半角的(对应的逆函数是WideChar),VBA的ASC函数是取ASCII值的。本想转换成半角的你变成了取ASCII值,不错才怪呢。

怎么办?解决的方法非常简单,在VBA代码中,把ASC变成worksheetfunction.asc就可以(application前缀可以省略),即调用工作表提供的函数ASC。EXCEL环境中,这种调用增加不了多少开销,还是合算的。


改正之后,代码运行正常了,问题解决。

       




https://blog.sciencenet.cn/blog-1213210-1060669.html

上一篇:一个解析SOOPAT专利信息并追加到NoteExpress的小工具(开源)
下一篇:生活中的"危险气体"与"气体危险"
收藏 IP: 112.2.61.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 15:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部