2016-09-21 99 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 

這應該是選擇第一個字符,然後對它做些什麼,然後移動到第二個字符,那部分不會發生,因爲「test」的值不會增加,並且該宏給出錯誤:「請求的收集不存在」增量變量的問題

爲什麼不是值增加。

+0

測試的值可能永遠不會增加,因爲提到的錯誤就是增量發生前點,但究竟在何處發生錯誤,你沒有告訴我們。 –

+0

我認爲錯誤發生在'Set firstchar = Selection.Characters(test)' –

+1

錯誤「請求的集合不存在」或「請求的集合成員不存在」?您正在循環查看文檔中的所有字符,並嘗試訪問選擇中相同數量的字符。如果您尚未選擇整個文檔,則會導致錯誤,此時選擇變得無關緊要,因爲您可以使用文檔範圍。 – arcadeprecinct

回答

1

那麼,它適用於Selection。如果你不選擇任何文字,它會給你提到的錯誤。但爲什麼過度複雜呢?此代碼做什麼你(好像)想:

Dim chr As Range 

For Each chr In Selection.Characters 

    MsgBox chr.Text 

Next chr