讨论区 老师答疑区 主题详情
dukai289
老师参与 VBA识别不了有些字母

杨老师,您好:

    

    有个关于字符集的问题想请教您一下。


    我的工作中需要对EXCEL中的法语进行操作,但是VBA识别不了有些字母。

    如图中chaines的i(上面有个标志的)

    

    请问,有什么方法能实现这些操作?


课程

所有回复(2)

杨洋老师 版主

再多说一点,我在TD银行工作的时候也经常遇到一些英文法文混杂的情况。一般情况下,我们会先在Excel表格(不是VBA)中将它们替换成英文形式(就是把戴帽子的各种字母替换成相近的英文字母),然后再用VBA处理。具体在表格中替换法语的办法,你可以上网搜一下资料。

2016-12-9
杨洋老师 版主

终于有同学问到字符编码的问题了,让我静静先(不是因为激动,而是因为郁闷)……

不同语言中的字符编码,可以说是所有程序员的最大的噩梦之一!简单的说,我们在《提高篇》里面已经讲过,每个字符都是由一个数字代表的,那么除了最通用的英文外,其他各种语言都由各个国家自己规定了数字编码方案,所以同样一个23423,在汉语系统中可能代表某个汉字,而在法语系统中可能就代表某个“戴帽子”的字母。

为了解决这个问题,后来大家推出了Unicode编码方案,把常用语言都编到一套大的数字方案中,互不冲突。不过可惜的是,VBA特别是VBE并没有默认支持Unicode,而是仍然使用一种古老的方案称之为“代码页”。大概意思就是,如果windows当前的代码页是“中文”,那么23423就按中国方案翻译成汉字;如果代码页改成了“法文”,那么就把它按法国方案翻译成某个字母。

说到这里,楼主这个问题的解决办法就出来了:修改windows的代码页。具体做法是,打开“控制面板”——“语言与地区”,在设置窗口中找到“管理”——“修改系统地区” (不好意思,我的系统是英文版Windows7,所以上述几个名字是我自己看着翻译的,可能与中文版系统上面显示的不一样)。在里面把地区改成“法国”,然后重启电脑。这回在运行VBA就可以用mid等函数取出法语字符串的每一位了。我在自己的电脑上亲测成功。

不说了,我现在马上要把电脑改回到“中国”并重启去了……

2016-12-9

发表观点要登录哦!点击登录

回复

代码语言
字号
发布

发表观点要登录哦!

最近活动:2016-12-9
创建时间:2016-12-8
浏览次数:621
关注人数:0

使用协议与隐私政策

感谢您使用网易云课堂!

为了更好地保障您的个人权益,请认真阅读《使用协议》《隐私政策》《服务条款》的全部内容,同意并接受全部条款后开始使用我们的产品和服务。若不同意,将无法使用我们的产品和服务。

同意
手机课堂
下载App
返回顶部