使用VBA在选择之前和之后添加字符

时间:2016-06-15 08:38:06

标签: vba ms-word word-vba

我尝试编写一个宏来在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

1 个答案:

答案 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