分享

科学网

 旅行中的甘蓝 2020-08-05

      一直没有注意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环境中,这种调用增加不了多少开销,还是合算的。

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多