2016-04-28 21 views
0

Mein Dokument enthält viele Leerzeichen und Absatzmarken.Erkennen, ob die Auswahl Brief oder nicht ist

Was ich tun möchte, ist festzustellen, ob der Buchstabe Selection.find einen Buchstaben von A bis Z ist?

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 

Antwort

0

Hatte einige Forschung auf Absatzmarke und finden Sie heraus, dass Chr(13)^p (Absatzmarke) erkennen kann. Der folgende Code kann paragraph mark oder Letter erkennen.

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 
1

Wenn Sie das erste Zeichen Ihrer Auswahl bekommen möchten, können Sie auch Left(Selection,1) verwenden. Wenn Sie den ersten Buchstaben finden möchten, können Sie verwenden:

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

Wenn Sie wissen wollen, ob ein String (der Länge eins) ist ein Brief, den Sie Like verwenden können einige Mustervergleich zu tun:

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

oder überprüfen sie die Unicode-Wert

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

edit: letztes Beispiel entfernt, weil sie nicht, wie es sollte nicht funktioniert.

+0

Das stimmt, danke für Ihren Kommentar. Das ist, was ich bekomme, um nicht jeden Charakter auszuprobieren ... – arcadeprecinct