|||
一直没有注意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环境中,这种调用增加不了多少开销,还是合算的。
改正之后,代码运行正常了,问题解决。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 17:08
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社