2016-05-18 12 views
0

WordのVBAでFind.FindTextを使用して単語の最初の数文字を探し、その単語の残りの部分を選択します。たとえば、私は: "こんにちは、AB - 1234-123チェック"Word VBA - Findから単語の残りの部分を選択します。

私は "AB-"を見つけるだろうし、 "AB - 1234-123"を得るために単語の残りの部分を選択します。私はMoveEndUntil( "")としてスペースを使用できません。単語がピリオドで終わることがあるためです。

はこれまでのところ、私のコードはおそらく、あなたが単語全体にそれを展開し、見つかった単語の部分を選択することができます

SearchString = "AB-" 
With Rng.Find 
Do While .Execute(FindText:=SearchString, Forward:=True) = True 
     Rng.MoveEndUntil (" ") 
     MsgBox (Rng.Text) 
Loop 
End With 

答えて

0

あなたはまだMoveEndUntilを使用することができます。このメソッドのヘルプトピックを見ると、最初のパラメータがCSetで、複数の文字を保持できることがわかります。したがって、スペースやピリオド、カンマ、セミコロンなどを探すことができます。

コードをテストしている間に、それが立て続けにループに入ります常に最初のインスタンスのみを検索します。だから私はCollapseメソッドでそれを世話しました。次のFindシーケンスは最後の "見つかった"レンジの直後に始まります。

Dim rng As word.Range 
Dim SearchString As String 

Set rng = ActiveDocument.content 
SearchString = "AB-" 
With rng.Find 
    Do While .Execute(findText:=SearchString, Forward:=True) = True 
     rng.MoveEndUntil (" .,;!") 
     MsgBox rng.Text 
     rng.Collapse wdCollapseEnd 
    Loop 
End With 
+0

ありがとうございました。私は別の簡単な質問があります。単語が改行で終わる場合、rng.MoveEndUntil( "。、; vbNewLine)を改行を含めることができますか? –

+0

試してみるとどうなりますか? vbNewLineの代わりにChr(13)... –

0

のですか?

Selection.Expand Unit:=wdWord

関連する問題