《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
代码截图:

代码解读:
- '将光标移到第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实践经验,全部浓缩在下面的各个教程及应用工具中:



