VBA之Word应用第五章第九节 Range对象的方法(三)

《VBA之Word应用》(版权10178982),是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕"面向对象编程"讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实例让大家感受到Word VBA 的妙处。

这套教程是专门针对WORD VBA 的教程,是VBA中的稀缺资源,我给这套教程分归为中级教程,希望大家在VBA入门后再学习这套教程,这样会更加深入的理解面向对象编程的意义。

本套教程共三册十六章,今日内容为VBA之Word应用第五章第九节 Range对象的方法(三)

【分享成果,随喜正能量】为什么很多人会长期反复被人骗?因为她们的要求,只有骗子才能满足,正常人满足不了。

第五章第九节 Range对象的方法(三)

大家好,我们这讲继续Range对象的方法讲解,在VBA WORD中Range对象应用是最为经常的,关于这个对象的一些知识点,大家要尽可能的去掌握。

1 Range.Move方法

将指定范围折叠到其起始位置或结束位置,然后将折叠后的对象移动指定的单位数。

语法: expression. Move(Unit,Count)

其中expression 是必需的,是一个代表 Range 对象的变量。

参数:

Unit 可选 WdUnits 范围要移动的单位。

Count 可选 Variant 指定范围内的移动的单位数。 如果 Count 是一个正数,对象折叠到其结束位置,并在文档中向后移动指定的单位数。 如果 Count 是一个负数,对象折叠到其起始位置,并向前移动指定的单位数。 默认值为 1。 还可以使用 Move方法之前使用Collapse方法控制的折叠方向。如果该范围位于一个单位的中间,或者不能折叠,将其移动到的开头或结尾的部门计为移动它一个完整的单元。

  • 此方法返回一个Long值,该值指示实际移动的对象的单位数,如果移动不成功,则返回0(零)。折叠范围的开始和结束位置相同。

  • 对一个范围应用 Move 方法不会重排文档中的文本。 相反,它重新定义该区域,以引用文档中的新位置。

2 Range.MoveEnd方法

该方法移动结束字符位置的范围。。

语法:expression.MoveEnd(Unit, Count)

其中expression 是必需的,是一个代表 Range 对象的变量。

参数:

Unit 可选 WdUnits 结束字符位置要移动的单位。

Count 可选 Variant 要移动的单位数。 如果此数字为正数, 结束字符位置将在文档中向前移动。 如果此数字为负, 则结束位置向后移动。 如果结束位置溢出起始位置, 则范围将折叠, 两个字符位置将一起移动。 默认值为 1。

3 Range.MoveStart 方法

该方法移动指定范围的起始位置。

语法:expression.MoveStart(Unit, Count)

其中expression 是必需的,是一个代表 Range 对象的变量。

参数:

Unit 可选 WdUnits 指定范围的起始位置要移动的单位。

Count 可选 Variant 指定区域要移动的最大单位数。 如果 Count 是正数,则该区域的起始位置在文档中向前移动。 如果为负数,则起始位置向后移动。 如果起始位置向前移至结束位置之前,则折叠该区域,并将起始位置和结束位置移至同一位置。 默认值为 1。

4 实例:范围区域的扩展

下面我们还是通过一个实例来讲解本节的方法,这个实例中会讲到Range区域的调整,我们看下面的代码:

Sub mynzH()

'将光标移到第4段

Set myRange = ActiveDocument.Paragraphs(1).Range

With myRange

.Collapse Direction:=wdCollapseStart

.Move Unit:=wdParagraph, Count:=3

.Select

End With

Selection.InsertAfter "VBAVBA"

Set myRange = Nothing

'将myRange区域从第2段向下扩展2段

If ActiveDocument.Paragraphs.Count >= 5 Then

Set myRange = ActiveDocument.Paragraphs(2).Range

With myRange

.MoveEnd Unit:=wdParagraph, Count:=2

.Select

End With

End If

Set myRange = Nothing

'将myRange区域从第5段向前扩展2段

If ActiveDocument.Paragraphs.Count >= 5 Then

Set myRange = ActiveDocument.Paragraphs(5).Range

With myRange

.MoveStart Unit:=wdParagraph, Count:=-2

.Select

End With

End If

Set myRange = Nothing

End Sub

代码截图:

代码解读:

  1. '将光标移到第4段

Set myRange = ActiveDocument.Paragraphs(1).Range

With myRange

.Collapse Direction:=wdCollapseStart

.Move Unit:=wdParagraph, Count:=3

.Select

End With

Selection.InsertAfter "VBAVBA"

Set myRange = Nothing

以上代码将光标移动到第四段前,并写入 "VBAVBA" 。

2) '将myRange区域从第2段向下扩展2段

If ActiveDocument.Paragraphs.Count >= 5 Then

Set myRange = ActiveDocument.Paragraphs(2).Range

With myRange

.MoveEnd Unit:=wdParagraph, Count:=2

.Select

End With

End If

Set myRange = Nothing

以上代码将第二段,向下扩展2段到第4段。

3)'将myRange区域从第5段向前扩展2段

If ActiveDocument.Paragraphs.Count >= 5 Then

Set myRange = ActiveDocument.Paragraphs(5).Range

With myRange

.MoveStart Unit:=wdParagraph, Count:=-2

.Select

End With

End If

Set myRange = Nothing

以上代码将第5段向前扩展2段到第三段。

看代码的运行:

今日内容回向:

1 Word中Range对象的Move方法、MoveEnd方法、MoveStart方法的意义是什么?

2 如何实现范围的扩展?

本讲内容参考程序文件:Doc 005文档.docm

我20多年的VBA实践经验,全部浓缩在下面的各个教程及应用工具中:

相关推荐
VBA633717 小时前
VBA数据库解决方案第二十六讲 工作表中不存在的数据在数据表中批量删除
vba
VBA633717 天前
AI批量PDF数据抓取工具
vba
Access开发易登软件20 天前
我全新开发了一套 Access 通用 Excel 导入工具,现在开源了
数据库·microsoft·excel·mfc·vba·access·access开发
wuchunyu00224 天前
VBA 行内容相同时字体变灰
vba
VBA63371 个月前
VBA 64位API声明语句第025讲
vba
Access开发易登软件1 个月前
Access 导入 Markdown 表格:把文档里的数据写进表
前端·html·vba·markdown·access开发
zhongwei2281 个月前
vba将一个文件夹的内容复制到另外一个文件夹的函数,若存在则是否覆盖的参数。复制前检查源文件夹是否存在。若目标文件夹不存在,则新建
前端·vba
Access开发易登软件2 个月前
Access 复杂业务计算,SQL 写在 VBA 还是存储过程?
microsoft·vba·access·access开发
SunnyDays10112 个月前
如何使用 Python 添加和编辑 Excel VBA 宏(无需安装 Excel)
开发语言·python·excel·vba