VBA函数批量将将字符由全角转为半角,或由半角转为全角-同时适用Excel Access
- 2017-09-08 10:49:00
- zstmtony 原创
- 20692
VBA函数批量将将字符由全角转为半角,或由半角转为全角,及如何判断一串字符里面含有全角的英文数字符号
Excel微信群中有网友有不少表格是全角,希望使用VBA批量转换为半角。
尝试用Access写了一个,在Excel VBA里也通用。
'VBA将字符由全角转为半角 '调用方法 gf_WideToNarrow("Excel交流网2016") Public Function gf_WideToNarrow(strSrc As String) As String Dim strResult As String '通过StrConv及 vbNarrow参数转换 strResult = StrConv(strSrc, vbNarrow) gf_WideToNarrow = strResult End Function
'VBA将字符由半角转为全角 Public Function gf_NarrowToWide(strSrc As String) As String Dim strResult As String '通过StrConv及 vbWide参数转换 strResult = StrConv(strSrc, vbWide) gf_NarrowToWide = strResult End Function
另判断 字符串中是否含有全角符号的函数
'判断字符串有否包含全角 '调用方法:gf_IncludeWideChar("Excel交流网2016") Public Function gf_IncludeWideChar(strSrc As String) As Boolean gf_IncludeWideChar = (strSrc = StrConv(strSrc, vbNarrow)) End Function '单个字符判断,也可使用 AscB(Mid(字符串, i, 1)) = Asc(Mid(字符串, i, 1))
网络上Rubi的专栏 还有另一种VBA 全角转半角的方法 是使用逐个对应的方法,不够灵活,但可以按自己的方式来定义
Option Explicit Sub BatchReplace() Dim oDict, strKey Set oDict = CreateObject("Scripting.Dictionary") '全角数字转换为半角 oDict.Add "1", "1" oDict.Add "2", "2" oDict.Add "3", "3" oDict.Add "4", "4" oDict.Add "5", "5" oDict.Add "6", "6" oDict.Add "7", "7" oDict.Add "8", "8" oDict.Add "9", "9" oDict.Add "0", "0" '小写全角转换 oDict.Add "a", "a" oDict.Add "b", "b" oDict.Add "c", "c" oDict.Add "d", "d" oDict.Add "e", "e" oDict.Add "f", "f" oDict.Add "g", "g" oDict.Add "h", "h" oDict.Add "i", "i" oDict.Add "j", "j" oDict.Add "k", "k" oDict.Add "l", "l" oDict.Add "m", "m" oDict.Add "n", "n" oDict.Add "o", "o" oDict.Add "p", "p" oDict.Add "q", "q" oDict.Add "r", "r" oDict.Add "s", "s" oDict.Add "t", "t" oDict.Add "u", "u" oDict.Add "v", "v" oDict.Add "w", "w" oDict.Add "x", "x" oDict.Add "y", "y" oDict.Add "z", "z" '大写全角转换 oDict.Add "A", "A" oDict.Add "B", "B" oDict.Add "C", "C" oDict.Add "D", "D" oDict.Add "E", "E" oDict.Add "F", "F" oDict.Add "G", "G" oDict.Add "H", "H" oDict.Add "I", "I" oDict.Add "J", "J" oDict.Add "K", "K" oDict.Add "L", "L" oDict.Add "M", "M" oDict.Add "N", "N" oDict.Add "O", "O" oDict.Add "P", "P" oDict.Add "Q", "Q" oDict.Add "R", "R" oDict.Add "S", "S" oDict.Add "T", "T" oDict.Add "U", "U" oDict.Add "V", "V" oDict.Add "W", "W" oDict.Add "X", "X" oDict.Add "Y", "Y" oDict.Add "Z", "Z" '标点符号 oDict.Add ",", "," oDict.Add ":", ":" oDict.Add ";", ";" oDict.Add "(", "(" oDict.Add ")", ")" oDict.Add "[", "[" oDict.Add "]", "]" oDict.Add ".", "." oDict.Add "+", "+" oDict.Add "%", "%" oDict.Add "/", "/" ' ...... ' 在这里可以根据需要增加更多的替换规则 ' ...... For Each strKey In oDict.Keys Selection.Find.Execute FindText:=strKey, ReplaceWith:=oDict(strKey), Replace:=wdReplaceAll Selection.StartOf wdStory Next MsgBox "完成!" End Sub
另Excel还可试下 =widechar(a1)
Unicode编码判断,全角标点/数字及英文字母范围:FE30--FFE5
全角与半角的区别及相关知识
全角指一个字符占用两个标准字符位置的状态。汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。
一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。
全角是一种电脑字符,且每个全角字符占用两个标准字符(或半角字符)位置。
每个普通字符(或半角字符)只占用一字节的空间(一字节有8位,共256个编码空间),而汉语、日语、及朝鲜文等文字语言的字库量远大于256个,所以改用两个字节来储存。同时,也是因为中日韩等文字的书写习惯,如果统一使用全角字符的话,排列起来也显得整齐。
为了排列整齐,英文和其它拉丁文的字符和标点也提供了全角格式。
通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。
全角与半角有什么区别?各在什么情况下使用?
全角占两个字节,半角占一个字节。
半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节。
在不支持汉字等语言的计算机上只能使用半角标点(其实这种情况根本就不存在半角全角的概念) 。
,.?\'! ……这些是半角的
,。?‘! ……这些是全角的
对于大多数字体来说,全角看起来比半角大,当然这不是本质区别。
在中文输入法中,切换全角和半角格式的快捷键为SHIFT+空格。
全角和半角区别
全角就是字母和数字等与汉字占等宽位置的字。
半角就是ASCII方式的字符,在没有汉字输入法起作用的时候输入的字母数字和字符都是半角的。
示例如下:(键盘的输入是一样的,输入法的设置不同)
在汉字输入法出现的时候,输入的字母数字默认为半角,但是标点则是默认为全角(如下图)可以通过鼠标点击输入法工具条上的相应按钮来改变,输入法名字左边的按钮是改变中文和英文输入的,右边的圆和半圆是改变字母和数字的全角半角的,再右边的“.,”或者"。,"是用来改变标点符号的中英文设置(中文标点即是全角,英文标点即是半角),最右边的键盘图标是显示软键盘用的,可以输入一些特殊字符或者其它语言里面的字母。
- office课程播放地址及课程明细
- Excel Word PPT Access VBA等Office技巧学习平台
- 将( .accdb) 文件格式数据库转换为早期版本(.mdb)的文件格式
- 将早期的数据库文件格式(.mdb)转换为 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 数据库引擎和访问连接引擎以阻止对远程数据库的访问(remote table)
- Access 365 /Access 2019 数据库中哪些函数功能和属性被沙箱模式阻止(如未启动宏时)
- Access Runtime(运行时)最全的下载(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些电脑无法正常注册的解决办法(regsvr32注册时卡住)
- office使用部分控件时提示“您没有使用该ActiveX控件许可的问题”的解决方法
- RTF文件(富文本格式)的一些解析
- Access树控件(treeview) 64位Office下出现横向滚动条不会自动定位的解决办法
- Access中国树控件 在win10电脑 节点行间距太小的解决办法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 树控件 ListView列表等64位MSCOMMCTL.OCX控件下载
- VBA或VB6调用WebService(直接Post方式)并解析返回的XML
- 早期PB程序连接Sqlserver出现错误
- MMC 不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- sql server连接不了的解决办法
- localhost与127.0.0.1区别
- Roych的浅谈数据库开发系列(Sql Server)
- sqlserver 自动备份对备份目录没有存取权限的解决办法
- 安装Sql server 2005 express 和SQLServer2005 Express版企业管理器 SQLServer2005_SSMSEE
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |