问题描述:
在用 Word VBA 编写自动添加书签的宏时,出现以下错误:
代码:
Sub AddBookmark(prefix As String)
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend '这两行代码选中整一行
Selection.MoveEnd Unit:=wdLine, Count:=1
Set bookmarkName = Selection.Range
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:=prefix & "_" & bookmarkName
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
End Sub
查阅国内外的相关资料无果,只能自己 debug
由于前面使用 Selection 选中了整一行文本,而通过观察发现选中的整行文本实际上是包含换行符的,如下图:
于是猜测可能是该换行符引起的报错,于是在添加书签前多加入一行代码:
bookmarkName.End = bookmarkName.End - 1
用于取消选中最后的换行符,成功解决问题