我尝试编写一个宏来在Word中的选定文本之前添加某个字符。这很好用。我想再添加一个功能。如果没有选择,宏应选择光标所在的单词,然后添加某个字符。
我有以下代码:
Sub AddChar()
If Len(Trim(selection.Text)) >= 1 Then
Trim (selection.Text)
selection.InsertBefore Chr(187)
selection.InsertAfter Chr(171)
Else
selection.Words(1).Select
selection.InsertBefore Chr(187)
selection.InsertAfter Chr(171)
End If
End Sub
答案 0 :(得分:1)
我假设您的问题是关于您有“点”选择的情况。
当你有一个“点”选择时,虽然它看起来好像没有选择任何东西,但是Selection对象实际上包含插入点之后的字符(你可以通过输入
来检查)?Selection
在Visual Basic编辑器的立即窗口中
所以问题是选择的长度仍然是1,所以你的初始测试
If Len(Trim(selection.Text)) >= 1 Then
无效。
您需要做的是检查Selection.Type。您会发现对象浏览器列出了几种类型,但是例如以下代码将解决当前的问题:
If Selection.Type = wdSelectionType.wdSelectionIP Then
' code for a "point" selection
Else
' code for the case where something is already selected
End If