单位制转换范文

2024-08-19

单位制转换范文(精选3篇)

单位制转换 第1篇

1 引言

手中有些文档的速度单位为英制, mph (英里每小时), 希望转换成公制, kph (公里每小时), 包括表格和文本框中的数据, 如图1所示。数据格式为单一值 (如70mph, 需替换为112kph) 和上下限 值 ( 如33.5 -35.5mph, 需替换为53.6 - 56.8kph)。Word的查找和替换功能不支持对替换的结果进行数值计算。逐一手工替换的话, 工作量比较大, 还容易出错。这时就会想用Word的VBA来实现单位制转换。

2 设计思路

程序的流程:(1) 找到要替换的数据; (2) 进行数学计算, 本例是乘以1.6; (3) 用计算结果替换相关数据; (4) 继续查找, 循环1~3, 直到替换所有数据。 (5) 遍历所有文本框, 循环1~4。

流程很简洁, 但在实际编制过程中要注意一些细节的处理, 否则要么漏掉数据, 要么陷入死循环。下面详细讲解每步的实现过程。

2.1 查找

Word的查找功能很强大 , 利用“通配符” 可以匹配很复杂的文本。如何使用“通配符” 不在文中的讨论范围内, 大家可以参考Word帮助。下面介绍两个和文中相关的“通配符”:

[x-y] 可以匹配x到y范围内的任意单个字符 , 如 [0-9] 匹配0到9的单个数字。

{x,y} 则为指定前一字符 (集) 的重复次数为x到y之间。 [0-9] {1,} 匹配多个数字组成的字符串, 如9、23、000等。

本例中用 [0-9] [-.0-9] {1,} mph来匹配70mph和33.5- 35.5mph两种类型。 [0-9] [-.0-9] {1,} mph的意思是以0-9数字开头, 包括1个或多个 [-.0-9] 范围内的字符, 并以mph结尾的字符串。

在VBA中使用Range对象来引用文档中的某一连续区域, 通过开始和结束字符位置来定义该区域。Range对象的Find属性可返回一个Find对象。Find对象的属性和方法对应于“查找和替换”对话框中的选项。Find对象的MatchWildcards属性为True时意味着启用“通配符”来查找文本。运行Find对象的Execute方法, 如果返回值为True, 说明找到符合查找条件的文本, 这时会把Range对象的范围更改为找到的文本的范围, 通过Range对象的Text属性可以获得找到文本的内容。

2.2 数值转换

利用CDbl和Val函数把文本转换为数值。本例中对于上下限值型数据如33.5-35.5mph需先拆分为33.5和35.5, 然后分别乘以1.6, 再合并成新的数据53.6-56.8kph。

2.3 内容替换

更改Range对象的Text属性就可以把原有的内容替换为上述处理后的数据。

2.4 继续查找

(1)~(3)完成后 , 很容易想到利用While循环 , 根据Find对象的Execute方法的返回值判断是否需要重复 (1)~(3)。即:

利用编好的程序对下面的数据进行处理:

运行结果为:

160-200kph. 112mph is ok.

结果真是出人意料, 只有第一个数据被替换了。为确认出错的环节, 笔者决定先不进行替换操作。增加Range.Font.Color = RGB (255, 0, 0) 语句把找到文本的字体颜色设置为红色。即:

运行结果为:

100-125mph. 112mph is ok.

结果表明所有数据都可以被成功找到, 这说明程序的思路是正确的。为什么替换Range对象的文本内容后, 就不能找到其余的数据了呢? 因为Range对象的Text属性更改后, Word就会在该Range对象中继续查找。如果把查找规则改为 [0-9] [-.0-9] {1,} , 因替换后数据仍然符合查找规则 , 程序会在Range对象中不断地替换数据 , 陷入死循环中。如何让Word在替换数据后的范围内继续查找和替换数据呢? 容易想到的办法是利用Range对象的SetRange方法, 把Range对象的范围改为从 当前Range的结尾 ( Range.End) 到文档结 尾 (ActiveDocument.Content.End) 。经测试 , 该方法在处理文档的域 (Field) 中的数据或者复杂表格中的数据时还是会陷入死循环中, 另外该方法也不适用于文本框。看来该方法行不通, 需要另辟蹊径。通过Word的录制宏功能, 录制一个包括查找过程的宏。可以看到Word录制的宏中用的是Selection对象。在录制之前, 没有选定任何内容, Selection对象为当前插入点 (Insert Point)。执行宏程序 , Word会在插入点后开始查找。这说明替换完成后, 可以把Range对象的范围设定为一个插入点, Word就会在当前Range所在的Story对象中继续查找和替换了。用.SetRange .End, .End把插入点设置到当前Range的结尾。再次运行程序, 成功完成预定的目标。

把 (1)~(4) 写入子函 数FindTextInRange (FindRange As Range, i As Integer), 其中FindRange表示要查找的区域 , i为计数变量, 函数返回值为替换数据的个数。函数中为统计方便, 还给替换的数据增加了上角标 (.Font.Superscript = True)。用FindTextInRange (ActiveDocument.Range, 0) 可以替换主文档中所有相关数据。

2.5 遍历所有文本框

文本框属于Shape对象的一种, 通过ActiveDocument对象的Shapes属性可以返回当前文档中所有Shape对象。Shape对象的.TextFrame.TextRange属性返回文本框内容的Range对象。用FindTextInRange (sh.TextFrame.TextRange, i) 子函数就可以替换sh文本框中所有相关数据。

图2为程序运行结果。

3 程序代码

4 结语

旨在起到抛砖引玉的作用, 介绍了如何用简短的几行VBA代码来完成复杂的工作。上述VBA程序在Word 2007中运行通过。

摘要:提供的VBA程序用来完成查找特定的文本,并按一定的规则替换找到文本的功能。

五年级数学面积体积单位转换习题 第2篇

100cm2=()dm2

1278dm2=()m2 1.24L=()cm3=()ml

3dm3400cm3=()cm3

1289cm2=()m2 24dm3466cm3=()cm3

30L=()cm3 4立方分米=()立方厘米

480立方分米=()立方米=()立方厘 8平方米=()平方分米 3平方分米=()平方厘米 7平方分米=()平方厘米 7平方米=()平方分米 55平方分米=()平方厘米 14平方米=()平方分米

42平方分米=()平方厘米 24平方米=()平方分米189立方米30立方分米=()立方分米

348立方米400立方厘米=()立方厘米 3.56立方米=()立方分米 3.89平方分米=()平方厘米

24.78平方厘米=()平方分米=()平方米 129立方米300立方分米=()立方分米 23465立方分米=()立方米

13立方分米39立方厘米=()立方厘米=()立方分米 12 L 789ml=()cm3=()L 2.78L=()ml=()cm3 1立方米=()立方分米=()立方厘米 1平方米=()平方分米=()平方厘米

吉林:着力转换事业单位用人机制 第3篇

打破身份壁垒, 推进用人机制转换。出台《关于完善全省事业单位工作人员岗位聘用工作的意见》, 明确岗位聘用程序, 畅通管理、专技、工勤三类人员交流渠道, 聘任专技八级岗位满3年可以聘任六级职员, 聘任工勤三级岗位满5年可以聘任八级职员, 打破传统“干部”、工人等身份限制;事业单位聘用人员可以灵活采取民主推荐、民主测评、竞聘上岗、考察考核等多种方式, 避免产生“凡晋必竞”误区。

探索岗位动态管理, 着力搞活用人制度。出台《吉林省事业单位岗位设置动态管理实施意见》, 事业单位在出现分设、合并、编制调整、职责任务发生变化等五类情况时可以对岗位设置进行调整;九级职员和四级工勤岗位可以灵活设置, 不受固定比例限制, 一、二级工勤岗位可以实行总量调控, 拓宽了低层次岗位人员职业晋升渠道;开辟高层次人才聘任“绿色通道”, 事业单位引进或留住高层次、高技能人才在岗位不够的情况下可以增设相应岗位聘用。

上一篇:均匀试验下一篇:初中英语开放性教学