vbOK vbAbort vbRetry vbYes vbNo 说明
1 3 4 6 7
OK Cancel Abort Retry Ignore Yes No
vbCancel 2
vbIgnore 5
如果对话框显示 Cancel 按钮,则按下 ESC 键与单击 Cancel 按钮的效果相同。如果对话框中有 Help 按钮,则对话框中提供有上下文相关的帮助。但是,直到其它按钮中有一个被单击之前,都不会返回任何值。
注意 如果还要指定第一个命名参数以外的参数,则必须在表达式中使用 MsgBox。为了省略某些位置参数,必须加入相应的逗号分界符。
一、通过录制宏生成代码
如果无法确定要使用的 Visual Basic 方法或属性,可打开宏录制器并进行手动操作。宏录制器会将操作译成 Visual Basic 代码。录制操作完成后,可根据需要修改代码。例如,如果无法确定实现段落缩进的属性或方法,可执行下列操作:
1.在“工具”菜单上,指向“宏”,然后单击“录制新宏”。 2.如果需要,可更改默认的宏名称,然后单击“确定”启动录制器。 3.在“格式”菜单上,选定“段落”。 4.更改段落左缩进的值,然后单击“确定”。 5.单击“停止录制”工具栏上的“停止录制”按钮。 6.在“工具”菜单上,指向“宏”,然后单击“宏”。 7.从步骤 2 中选择宏的名称,然后单击“编辑”按钮。
查看 Visual Basic 代码来确定对应于段落左缩进的属性(LeftIndent 属性)。将插入点置于 LeftIndent 之中,并按 F1 或单击“帮助”按钮。在帮助主题中,可以查看示例以及支持 LeftIndent 属性的对象(单击“应用于”)。
(从上面可以看出,录制宏是我们认识未知对象的很好方法之一) 说明
录制的宏使用 Selection 属性返回 Selection 对象。例如,下列指令将所选段落缩进 0.5 英寸。
Sub IndentParagraph()
Selection.ParagraphFormat.LeftIndent = InchesToPoints(0.5) End Sub
您也可以修改录制的宏并与 Range 对象一起使用。
(我们在日常的使用中经常注意到:在使用“本机上的模板”时的向导就大量使用了Selection对象,而不是Range对象!难道说微软有更新层次的考虑?我想可能是Selection对象更稳定,跨版本能力更强吧!)
二、修改录制的 Visual Basic 宏
宏录制器是查找所需的 Visual Basic 方法和属性的非常方便的工具。如果不知道使用何种属性或方法,可打开宏录制器,手动执行操作。宏录制器会将操作译为 Visual Basic 代码。但录制宏具有一些限制条件。您不能录制下列内容:
条件分支 变量指定 循环结构 自定义用户窗体 出错处理
用鼠标选定的文字(必须使用组合键)
若要增强宏的功能,可能需要修改录制到模块中的代码。 删除 Selection 属性
使用宏录制器创建的宏取决于所选内容。在大多数录制的宏指令的开头,可以看到“Selection”。录制的宏使用 Selection 属性返回 Selection 对象。
例如,下列示例将所选内容移动至 Temp 书签,并在书签之后插入文字。 Sub Macro1()
Selection.Goto What:=wdGotoBookmark, Name:=\ Selection.MoveRight Unit:=wdCharacter, Count:=1 '相当于选中后按一个键盘的右方向键 Selection.TypeText Text:=\End Sub
这个宏虽然可以完成任务,但是有一些缺点。首先,如果文档中没有一个名为 Temp 的书签,该宏将导致出错。其次,该宏可能不正确地移动所选内容。修改这个宏,使其不再使用 Selection 对象,就可解决上述两个问题。以下就是经修改后的宏:
Sub MyMacro()
If ActiveDocument.Bookmarks.Exists(\ endloc = ActiveDocument.Bookmarks(\ ActiveDocument.Range(Start:=endloc, _ End:=endloc).InsertAfter \'_ 就是续行的意思 End If End Sub
Exists 方法用于检查是否存在名为 Temp 的书签。如果找到该书签,则用 End 属性返回该书签结束字符的位置。最后使用 Range 方法返回一个引用书签结束位置的 Range 对象,以使用 InsertAfter 方法插入文字。有关定义 Range 对象的详细信息,请参阅处理 Range 对象。
使用 With…End With
可使用 With…End With 结构简化引用相同对象的宏指令。例如,在文档顶
部添加标题时,将录制下面的宏。
Sub Macro1()
Selection.HomeKey Unit:=wdStory Selection.TypeText Text:=\
Selection.ParagraphAlignment.Alignment = wdAlignParagraphCenter
End Sub
每个指令都使用 Selection 属性返回一个 Selection 对象。可以简化这个宏,这样只需使用一次 Selection 属性。
Sub MyMacro() With Selection
.HomeKey Unit:=wdStory .TypeText Text:=\
'.ParagraphAlignment.Alignment = wdAlignParagraphCenter '上面那句是原帮助中的,但肯定是笔误!微软没看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End With End Sub
不使用 Selection 对象也可以完成相同的任务。下面的宏在活动文档的开头使用 Range 对象来完成相同的任务。
Sub MyMacro()
With ActiveDocument.Range(Start:=0, End:=0) .InsertAfter \
'.ParagraphAlignment.Alignment = wdAlignParagraphCenter '上面那句是原帮助中的,但肯定是笔误!微软没看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End With End Sub
删除不必要的属性
如果录制了一个关于在对话框中选择选项的宏,即使只更改一个或两个选项,宏录制器也会记录该对话框中的所有选项的设置。如果不希望更改所有的选项,可从录制的宏中删除不必要的属性。下面录制的宏包含“段落”对话框的一些选项(单击“格式”菜单可显示该对话框的所有信息)。
Sub Macro1()
With Selection.ParagraphFormat
.LeftIndent = InchesToPoints(0) '左缩进0英寸 .RightIndent = InchesToPoints(0) '右缩进0英寸 .SpaceBefore = 6 '段前距6磅
.SpaceAfter = 6 '段后距6磅,下面不写了! .LineSpacingRule = 0
.Alignment = wdAlignParagraphLeft .WidowControl = True .KeepWithNext = False .KeepTogether = False .PageBreakBefore = False .NoLineNumber = False .Hyphenation = True
.FirstLineIndent = InchesToPoints(0) .OutlineLevel = 10 End With End Sub
但是,如果只需更改段前和段后间距,可将宏更改为: Sub MyMacro()
With Selection.ParagraphFormat .SpaceBefore = 6
Word - VBA - 学习交流资料(全)



