使用VBA在Office中输入特殊字符(1/3)
有个网友希望使用代码输入如下“月亮”字符,从截图中可以看出其字体是Segoe UI Symbol。如果文件中已经有这个字符,当然最简单的方法就是复制/粘贴,可是如果在空白文档,那么该如何输入呢?是否可以使用VBA代码直接输入这个特殊字符?
在Office中有个神器,可以查看字符编码,例如在Word中选中字符,依次单击【插入】>【符号】>【其他符号】,在【符号】对话框中可以看到字符代码为1F319。
根据这个字符代码可以在Word中先输入1F319,然后按<Alt+X>快捷键,将自动转换为月亮符号,操作时录制宏可以得到代码如下。
' Word VBA代码
Sub Moon1()Selection.TypeText Text:="1f319"Selection.ToggleCharacterCode
End Sub
在Word中使用【插入】>【符号】>【其他符号】也可以插入月亮符号,操作时录制宏可以得到代码如下,这个代码看起来有些奇怪,两次使用InsertSymbol,但是最终文档中只是插入了一个字符,其原因是UTF16需要占用4个字节(Byte)。
Sub WordInsertMoon()Selection.InsertSymbol Font:="Segoe UI Symbol", CharacterNumber:=-10180, _Unicode:=TrueSelection.InsertSymbol Font:="Segoe UI Symbol", CharacterNumber:=-8423, _Unicode:=True
End Sub
在Word中使用代码插入月亮符号,还都不算太麻烦,然而在Excel中就没有这么幸运了。
如果希望插入这个符号就没有那么简单了,在Excel使用【插入】>【符号】插入月亮符号,操作时录制宏可以得到代码如下,代码中月亮符号被两个问号所代替,这个代码自然也将没有什么用处。Word VBA中的InsertSymbol和ToggleCharacterCode也无法应用于Excel。
ActiveCell.FormulaR1C1 = "??"
在Excel中如何解决这个难题呢?这里要用到Byte类型数组。
Byte数组比较特殊,在VBA中可以直接使用字符串为Byte数组赋值,第5行字符串AB赋值到数组aByte中,数组中4个元素的值如下图所示,想必大家都知道字符A和B的ASC码值分别65和66。
第6行代码将Byte数组赋值给一个新的字符变量newStr。
第7行代码在立即窗口中输出变量newStr的值。
利用Byte数组的这个特性,在VBA中就可以轻松输入月亮符号了。
Sub Demo()Dim moon As String, iNumDim arrByte(0 To 3) As ByteiNum = Split("60,216,25,223", ",")For i = 0 To 3arrByte(i) = iNum(i)Nextmoon = arrByteActiveCell.FormulaR1C1 = moon
End Sub
【代码解析】
第4行代码使用Split函数生成字符串数组。
第5~7行代码为循环结构将字符串数组赋值给Byte数组,注意此处Byte数组的4个元素分别为60,216,25,223,而并不是把字符数组iNum的每个字符的ASC保存到Byte数组中。
第8行代码将Byte数组转换为字符串。
第9行代码在活动单元格中输入月亮符号。
您也许关心为什么使用这四个数字(60,216,25,223)就可以输入月亮符号?如果输入其他符号,如何知道应该用什么数字呢?且听下回分解。
相关链接:
- 使用VBA在Office中输入特殊字符(1/3)
- 使用VBA在Office中输入特殊字符(2/3)
- 使用VBA在Office中输入特殊字符(3/3)
使用VBA在Office中输入特殊字符(1/3)相关推荐
- 使用VBA在Office中输入特殊字符(续)
<使用VBA在Office中输入特殊字符(3/3)> 介绍了输入任意特殊符号的方法,并对于其编码原理进行了解释.感谢网友T_DC_Q在留言区提出的问题,输入WingDing2字体中的勾选符 ...
- 使用VBA在Office中输入特殊字符(3/3)
在博文<使用VBA在Office中输入特殊字符(1/3)>中我们知道月亮符号的字符代码为0x1F319[0x为16进制标识,在VBA中使用&H前缀]. 在Word中录制得到的代码如 ...
- Python中输入特殊字符
[小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python中输入特殊字符 使用转义符\转义字符 ● 选择题 以下不是 ...
- cad中直径符号不显示_CAD中输入特殊字符,正负符号会,度数符号会,但这个你不一定会...
在CAD中,很多时候我们需要输入特殊字符,如在給尺寸添加正负号时,我们需要输入"±"号,有时候要修改一个线性尺寸为直径值,我们需要输入直径符号"Ø",为了表示角 ...
- linux系统vim下换行输入_vim 中输入特殊字符回车符号('\r')
回车的含义:将光标移动到行首部 linux 下回车符号为'\r',windows下为'\r\n' linux环境下在vim中输入回车符号方式: 测试方式:我们在一个文本文件中输入一串数字,然后在末尾输 ...
- 使用ALT+数字小键盘在文本文件中输入特殊字符
在Windows系统中, 将ALT键和数字代码组合在一起,可以打出普通键盘上不存在的特殊字符和符号.操作方式 为按住ALT键,在数字小键盘上输入对应的数字代码,松开ALT键,就可以现实对应的字符 ...
- Office中如何实现公式颜色的更改?
在Office中输入的数学公式以图形方式存在,而且无法设置字体颜色.如何使得数学公式能够设置自己的颜色,给大家介绍两种方法: 方法1 1.单击"插入→对象→Microsoft 3.0公式编辑 ...
- oracle 切割字符串加引号_Oracle 在字符串中输入单引号或特殊字符
-- Start 字符串是用单引号括起来的,如果想在字符串中输入单引号该怎么办呢?有两种方法. 方法一:是用两个单引号代表一个单引号 SELECT 'I''m Shangbo' FROM DUAL; ...
- OFFICE中的VBA库的定义
本文仅针对OFFICE的VBA,所提到的VBA均指OFFICE中的VBA. 1.所有我们引用到的都是对象,而不是类,也就是说,我们所看到的VBA帮助文档中所列出的 2.对象.属性.方法.事件是分别定义 ...
最新文章
- DllMain中不当操作导致死锁问题的分析——线程中调用GetModuleFileName、GetModuleHandle等导致死锁
- mysql default unix_timestamp_mysql中的unix_timestamp函数
- 线程间操作无效: 从不是创建控件的线程访问它
- popen函数_PHP中16个高危函数
- JPA规范:一对多、一对一、多对多的双向关联与级联操作以及JPA联合主键
- 【codevs2287】火车站,第一个A掉的钻石题(迟来的解题报告)
- cad lisp 两侧偏移并删除_CAD做钣金件展开的原理你知道吗?
- java 中反射的使用_java中反射的基本使用
- 电商手机端促销海报设计PSD分层模板,来给你保驾护航!
- 计算机网络学习笔记(18. 网络应用(层)内容概述)
- Android TableLayout 表格布局
- 【图像融合】基于matlab GUI SIFT+小波变换图像拼接融合系统【含Matlab源码 815期】
- STC89C52RC烧录程序
- [转] 基于MBR 的bootkit的进展 鬼影-TDL4-BMW
- ArcGIS 解决影像裁剪后锯齿问题
- 流水灯程序总结:关于Crol和cror的用法
- python3 发送qq邮件带图片
- Tech Talk 宣传 | 如何高效、极简构造无服务器 Web 应用
- 微信小程序开发-多条件搜索tab展示
- Class热替换与卸载
热门文章
- 关于vmware p2v 转换后无法启动情况相关处理流程(仅作参考)
- 安装jdk并配置环境变量
- 【笔记】Linux命名空间—实验
- Java面向对象设计多态特征理解
- 在服务器后台运行程序
- 人体微生物组和幼儿成长---前1000天及以后
- Matlab实现孤勇者
- Hadoop权威指南(第3版) 修订版(带目录书签) 中文PDF--高清晰
- kakaotalk语音验证码,已读怎么破?KakaoTalk超实用的隐藏功能,真的太好用了!
- 推荐一个格式转换网站https://www.aconvert.com/cn/