检测选择是否为Letter

时间:2016-04-28 05:02:10

标签: vba word-vba word-2007 word-2003

我的文档包含大量空格和段落标记。

我想要做的是检测字符Selection.find是否是从A到Z的任何字母?

Dim EE As String
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^?"
        .Forward = True
        .Wrap = wdFindStop
    End With

    Selection.Find.Execute

    EE = Selection.Text

If isletter = True Then
        MsgBox ("Letter found")
Else
        MsgBox ("No letter found")
End If

2 个答案:

答案 0 :(得分:2)

如果您想获得所选内容的第一个字符,您还可以使用Left(Selection,1)。如果要查找第一个字母,可以使用:

With Selection.Find
    .MatchWildcards = true
    .Text = "[a-zA-Z]"  '[A-Z] if you only want upper case
    .Forward = True
    .Wrap = wdFindStop
End With

如果你想知道一个字符串(长度为1)是否是一个字母,你可以使用Like进行一些模式匹配:

If EE Like "[A-Z]" Then   '"[a-zA-Z]" for upper and lower case

或检查其unicode值

If AscW(EE)>=AscW("A") and AscW(EE)<=AscW("Z") Then  'for upper case letters

编辑:删除了最后一个示例,因为它没有按预期工作。

答案 1 :(得分:0)

对段落标记进行了一些研究,发现Chr(13)可以检测到^p(段落标记)。

以下代码可以检测到paragraph markLetter

Sub FindanyLetter()
Dim EE As String

        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "^?"
            .Forward = False
            .Wrap = wdFindStop
        End With
        Selection.Find.Execute

        EE = Selection.Text

        If EE = Chr(13) Or EE = " " Then

        MsgBox "Paraghraph mark or space"
        Else
        MsgBox "Letter"

        End If

    End Sub