Word中实现数值的单位制转换

上传人:飞*** 文档编号:36275945 上传时间:2018-03-27 格式:PDF 页数:3 大小:184.27KB
返回 下载 相关 举报
Word中实现数值的单位制转换_第1页
第1页 / 共3页
Word中实现数值的单位制转换_第2页
第2页 / 共3页
Word中实现数值的单位制转换_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《Word中实现数值的单位制转换》由会员分享,可在线阅读,更多相关《Word中实现数值的单位制转换(3页珍藏版)》请在金锄头文库上搜索。

1、P R O G R A M L A N G U A G E , c , , Wo r d中实现数值的单位制转换 朱大勇 摘 要:提供的 V B A程序用来完成查找特定的文本 ,并按一定的规则替换找到文本的功能。 关键词:Wo r d软件;V B A程序 ;单位制转换 Wo r d的查找和 替换功能 已经很强 大 ,但在 日常办公 中还 会 遇 到该功 能完成 不 了的任务 ,如对查 找 的结 果进 行数值 转 换 ,这就需要借助 于 Wo r d的 V B A,通过编写少量 的程序代码 就可实现该功能。程序 虽然很简 短 但 在编写过程 中也要处理 一些 棘手的问题。下面介绍程序 的设计 思路

2、 ,给出源程序及其 使用 方法。 1 引言 手中有些文档 的速度单位 为英制 ,m p h( 英 里每小时) ,希 望转换成公制 ,k p h( 公 里每小时) ,包括表格 和文本框 中的数 据 ,如图 1所示 。数 据格式 为单 一值( 如 7 0 m p h ,需替换 为 1 1 2 k p h ) 和 上 下 限 值( 如 3 3 5 3 5 5 m p h ,需 替 换 为 5 3 6 5 6 8 k p h ) 。Wo r d的查找和替换功能不支持对替换 的结果进行数 值计算 。逐一 手工 替换 的话 ,工作量 比较 大 还容易出错 。这 时就会想用 Wo r d的 V B A来实现

3、单位制转换。 嚣 : 蕊磊 一 磊 l ! : 竺竺 一 _ l ; ; ,、 一 一 O o -=-t r n 图 1 2设计思路 程序 的流程 : ( 1 )找到要替换的数据 ; ( 2 )进行数学计 算 ,本 例是乘 以 1 6 ; ( 3 )用 计算结 果替 换相 关数 据 ; ( 4 ) 继 续查找 ,循环 1 3 ,直 到替换所有数 据 。 ( 5 )遍 历所 有文 本框 ,循环 1 - 4 。 流程 很简洁 ,但 在实 际编制过程 中要 注意 一些 细节 的处 理 ,否则要 么漏掉数据 ,要么 陷入死循环 。下面详细讲解每步 的实现过程 。 2 1 查找 Wo r d的查找功 能

4、很强大 ,利用“ 通配符 ”可 以匹 配很复 杂 的文本 。如何使用 “ 通配符 ”不在 文中的讨 论范围内 大家 可以参考Wo r d帮助。下面介绍两个 和文 中相关的 “ 通配符 ” : x Y 】可 以匹配 x到 Y范 围 内的任意 单个字 符 ,如 0 - 9 】 匹配 0到 9的单个数字 。 x , y 则为指定 前一字符 ( 集)的重复次数 为 x到 Y之间 。 0 - 9 1 , 匹配多个数字组成的字符串,如 9 、2 3 、0 0 0等 。 本例 中用 0 - 9 一 0 - 9 1 , m p h来 匹配 7 0 mp h和 3 3 5 3 5 5 m p h两种类 型。 0

5、 - 9 一 0 - 9 1 , mp h的意思是 以 0 - 9 数字开头 ,包括 1 个或多个 一 0 - 9 范围 内的字符 ,并 以 m p h 结尾的字符 串。 在 V B A中使 用 R a n g e对象来 引用文 档中的某一连续 区域 , 通过开始和结束字符位置来定义该区域。R a n g e 对象 的 F i n d属 性可返 回一个 F i n d对 象。F i n d对 象的属性 和方 法对应于“ 查 找和替换 ”对话框 中的选项 。F i n d对象的 Ma t c h Wi l d c a r d s 属性 为 T r u e时意味着启用 “ 通配符 ”来查找 文本

6、。运行 F i n d对象 的 E x e c u t e方法 ,如果返 回值 为 T r u e ,说 明找到符合查找条件 的文 本 ,这 时会把 R a n g e对象 的范 围更改 为找到 的文本 的范 嗣 。通过 R a n g e 对象 的 T e x t 属性可以获得找到文本的内容 。 2 2数值 转换 利用 C D b l 和 V a l 函数把 文本转换为数 值。本例 中对 于上 下限值 型数据 如 3 3 5 3 5 5 m p h需先拆分 为 3 3 5和 3 5 5 ,然后 分别乘以 1 6 ,再合并成新的数 据 5 3 6 5 6 8 k p h 。 2 3 内容 替换

7、 更改 R a n g e对象 的 T e x t 属性 就可 以把 原有 的内容替 换为 上述处理后的数据 。 2 4继 续查 找 ( 1 ) 一 ( 3 ) 完 成后 ,很 容易想到利用 Wh i l e 循 环 ,根据 F i n d 对象的 E x e c u t e 方法的返回值判断是否需要重复 ( 1 ) 一 ( 3 ) 。即: W h il e R a n g e F i n d E x e c u t e 1查找 2数值转换 3替换 W en d 利用编好 的程序对下 面的数据进行处理 : 1 0 0 1 2 5 mp h 1 1 2 mp h i s o k 运行 结果 为

8、: 2 7 L h 【 J 一 【 I _ 实用第一 一 智慧密集 一 一 , 一 , 1 6 0 2 0 0 k p h 1 1 2 m p h I S ok 结果真是出人 意料 ,只有第一个数据被替换 了。为确认 出 错 的环节 ,笔者决定先不进行替换操作。增加 R a n g e F o n t C o l o r =R G B ( 2 5 5 , 0 , 0 )语句 把 找到 文本 的 字体颜 色设 置 为红 色 。 即 : Wh i le R a n g e F i n d E x e c u t e 1查找 2数值转换 Ra n g e F o n t Co lo r= RGB(

9、2 5 5 , 0 , 0 ) W e n d 运行结果为 : 1 0 0 -1 2 5 mp h 1 1 2 mp h i s o k 结果表明所有数据 都可 以被成功找到 ,这说 明程序 的思路 是正确 的。为什么替换 R a n g e 对象 的文本 内容后 就不能找到 其余 的数据 了呢? 因为 R a n g e 对 象 的 T e x t 属性 更改后 ,Wo r d 就会 在该 R a n g e对象 中继续查找 。如果把查找规则改 为 0 9 卜 0 - 9 】 1 , ) ,因替换 后数 据仍 然符 合 查找 规则 ,程序 会在 R a n g e对象 中不 断地替换 数据

10、,陷入死循 环 中。如何让 Wo r d 在替换数据后 的范 围内继续查找 和替换数据 呢?容易想到 的办 法是利用 R a n g e对象 的 S e t R a n g e方法 ,把 R a n g e对象 的范 围 改 为 从 当 前R a n g e 的 结 尾f R a n g e E n d 1 到 文 档 结 尾 ( A c t i v e D o c u m e n t C o n t e n t E n d ) 。经测试 ,该 方法 在处 理文 档 的 域 f F i e l d 1中的数据或者 复杂表格 中的数据时还是会 陷入死循 环中 ,另外该方法也不适用 于文本框 。看

11、来该方法行不通 ,需 要另辟蹊径 。通过 Wo r d的录制宏功能 录制一个包括查找过 程的宏。可以看到 Wo r d录制的宏 中用 的是 S e l e c t i o n对象 。在 录制 之前 ,没有选 定任何 内容 S e l e c t i o n对象 为 当前插 人点 ( I n s e r t P o i n t ) 。执行宏 程序 ,Wo r d会在 插入点后 开始查找 。这 说明替换 完成后 可 以把 R a n g e对 象的范 围设定 为一个 插入 点 ,w0 r d就会在 当前 R a n g e所在的 S t o r y对象 中继续查找和替 换了。用S e t R a

12、n g e E n d , E n d把插入点设置到 当前 R a n g e的结 尾。再次运行程序 ,成功完成预定 的目标。 把( 1 ) - ( 4 ) 写 入 子 函数 F i n d T e x t I n R a n g e( F i n d R a n g e A s R a n g e , i A s I n t e g e r ) ,其 中 F i n d R a n g e表示要查 找 的区域 ,i 为 计 数变量 ,函数 返 回值 为替换数 据的个数 。 函数 中为 统计方 便 ,还 给替换 的数据增加 了上 角标 ( F o n t S u p e r s c r i p

13、 t =T r u e ) 。 用 F i n d T e x t I n R a n g e( A c t i v e D o c u me n t R a n g e , 0 )可以替换主文档 中所有相关数据 。 2 5遍历所 有 文本框 文本框属 于 S h a p e 对象 的一种 ,通过 A c t i v e D o c u me n t 对象 的 S h a p e s 属性可以返 回当前文档 中所有 S h a p e 对象 。S h a p e 对 象 的T e x t F r a m e T e x t R a n g e属性返 回文本 框 内容 的 R a n g e 对

14、 象 。 用 F i n d T e x t I n R a n g e( s h T e x t F r a m e T e x t R a n g e , i )子 函数 就 可 以 替换 s h文本框 中所有相关数据。 图 2为程序运行结 果。 2 2 电 赫2 0缡 1 毪4 技 0 3舀 与 雏 ; 畦 电 赫 缡 毪 技 舀 与 雏 i - 0 0 ; a i _ 一 一 一 : : i, l 。 ” “ 3 程序代码 图 2 S u b F i n d Me( ) Di m i As I n t e g e r i =F i n d T e x t l n R a n g e (

15、 A c t iv e D o c u me n t R a n g e , 0 ) F or E a c h s h I n Ac t i v e Do c u me n t S h a p e s l f s h T e x t F r a me Ha s T e x t T h e n i =i +F i n d T e x t I n R a n g e ( s h T e x t F r a me T e x t R a n g e , i ) E n d I f Ne x t E n d S u b F u n c t io n F i n d T e x t I n R a n g e ( F i n d R a n g e A s R a n g e , i A s I n t e g e r ) As I n t e g e r F i n d T e x t I n R a n a =0 F in d Ra n g

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 期刊/会议论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号