2016-09-21 4 views
0
Dim chr As Range 
test = 1 

For Each chr In ActiveDocument.Range.Characters 
Dim firstChar As Word.Range 
Set firstChar = Selection.Characters(test) 
MsgBox (Selection.Characters(test)) 
MsgBox (test) 
test = test + 1 

Next chr 

これは、最初の文字を選択して後でそれを実行し、2番目の文字に移動し、「テスト」の値が増加していないためにその部分が実行されていない場合、 "要求されたコレクションが存在しません"というエラーがマクロに表示されます。変数をインクリメントするときの問題

値が増えないのはなぜですか?

+0

上記のエラーは増分が発生するポイントの前にあるため、テストの値は増分されませんが、エラーの発生場所を正確に教えていない可能性があります。 –

+0

私はこのエラーが 'Set firstchar = Selection.Characters(test)'で起きていると思います。 –

+1

"要求されたコレクションが存在しません"または "要求されたコレクションのメンバーが存在しません"というエラーはありますか?ドキュメント内のすべての文字をループして、選択範囲内の同じ文字数にアクセスしようとしています。ドキュメント全体を選択していないとエラーが発生します。ドキュメントの範囲を使用できるだけなので、その選択は無関係になります。 – arcadeprecinct

答えて

1

よく、Selectionで動作します。テキストを選択しないと、前述のエラーが表示されます。しかし、なぜそれを過度に複雑にするのでしょうか?このコードはあなたが望むものを行います:

関連する問題