当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
计算机一级考试辅导:修改录制的宏来提高效率
发布时间:2010/3/24 14:55:15 来源:城市学习网 编辑:admin

  修改录制的宏来提高效率
  宏录制器通过宏将操作翻译为 Visual Basic 代码。但是,录制 宏时会受到一些限制。不能记录下面的宏: 条件分支 变量指定 循环结构 自定义用户窗体 错误句柄 鼠标选定文字(必须使用组合键)
  为了提高录制的宏的功能,就可能需要修改录制到模块中的代 码。
  11.5.1 删除 Selection 属性
  使用宏录制器创建的宏通过对所选内容进行操作。在大多数录制 的宏指令的开头都有Selection。录制的宏使用 Selection 属性返 回 Selection 对象。例如,下面的示例将所选内容移动到 Book 书 签,并在书签后插入文字。
  Sub test()
  Selection.Goto What:=wdGotoBookmark, Name:="Book"
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Selection.TypeText Text:="New text"
  End Sub
  尽管这个宏会完成任务,但却有一些缺点。首先,如果文档没有 一个名为 Book 的书签,则这个宏会产生错误。其次,这个宏可能 会不正确地移动选定内容。修改这个宏后,不使用 Selection 对象, 就可以解决上面的两个问题。下面就是修改之后的宏。
  Sub Mytest()
  If ActiveDocument.Bookmarks("Book").Exists = True
  Then
  loc = ActiveDocument.Bookmarks("Book").End
  ActiveDocument.Range ( Start:=loc,
  End:=loc).InsertAfter "New text"
  End If
  End Sub
  Exists 方法用来检查是否存在名为 Book 的书签。如果找到了 这个书签,则 End 属性返回该书签的结束字符位置。最后,Range 方 法用来返回一个 Range 对象,该对象引用书签的结束位置,以使用InsertAfter 方法插入文字。
  11.5.2 使用 With …End With
  可使用 With … End With 结构简化对相同对象进行引用的宏指 令。例如,当在文档顶部添加一个标题(Title)时,会录制下面的 宏。
  Sub Macro()
  Selection.HomeKey Unit:=wdStory
  Selection.TypeText Text:="Title"
  Selection.ParagraphAlignment.Alignment =
  wdAlignParagraphCenter
  End Sub
  每个指令都使用 Selection 属性以返回一个 Selection 对象。 可以简化这个宏,这样只需使用一次 Selection 属性。
  Sub MyMacro()
  With Selection
  .HomeKey Unit:=wdStory
  .TypeText Text:="Title"
  .ParagraphAlignment.Alignment =
  wdAlignParagraphCenter
  End With
  End Sub
  不使用 Selection 对象也可以完成相同的任务。下面的宏在活 动文档的开头使用 Range 对象,就能完成相同的任务。
  Sub MyMacro()
  With ActiveDocument.Range(Start:=0, End:=0)
  .InsertAfter "Title"
  .ParagraphFormat.Alignment =
  wdAlignParagraphCenter
  End With
  End Sub
  11.5.3 删除不必要的属性
  如果录制了一个关于选中对话框中的选项的宏,即使只更改一个 或两个选项,宏录制器也会记录该对话框中的所有选项的设置。如 果不想更改所有选项,可从记录的宏中删除不必要的属性。下面录 制的宏包含【格式】菜单中【段落】对话框的一些选项。
  Sub Macro()
  With Selection.ParagraphFormat
  .LeftIndent = InchesToPoints(0)
  .RightIndent = InchesToPoints(0)
  .SpaceBefore = 6
  .SpaceAfter = 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
  .SpaceAfter = 6
  End With
  End Sub
  因为只需设置少数属性,所以简化后的宏运行得更快。只更改选 定段落的段前和段后的间距,而所有其他设置都没有改变。
  11.5.4 删除不必要的参数
  当宏录制器记录一个方法时,会包含所有参数值。下面的宏录制 打开名为 Test.doc 的文档。所得到的宏包含了 Open 方法的所有 参数。
  Sub Macro()
  Documents.Open FileName:

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved