我認爲以下兩個程序將是相同的,他們爲什麼不是?範圍變量與段落變量不同的行爲與選擇
此代碼:
For i = 1 To n
Set r = Selection.Range.Paragraphs(i).Range
r.Collapse
r.Text = " "
r.ContentControls.Add (wdContentControlCheckBox)
Next i
此代碼不:
For i = 1 To n
Set r = Selection.Range.Paragraphs(i).Range
Set p = r.Paragraphs(1)
p.Range.Text = " " + p.Range.Text
r.Collapse
r.ContentControls.Add (wdContentControlCheckBox)
Next i
據我所知道的,唯一的區別是,而不是串聯後方的空間舊的文本,然後將光標在para的開頭,我只是將光標放在para的開頭並輸入一個空格。
鉈;博士:我不明白爲什麼這兩個程序中有許多並不等同
我缺乏常識,以谷歌的原因。我試圖拉出通用指南。我嘗試着通過調試器來掌握控制流程,但這也沒有幫助。
感謝您抽出寶貴的時間。 我已經得到它的工作,但我需要幫助理解爲什麼。你能否詳細說明'改變選擇'?它爲什麼這樣做? Arent我只是操縱內部的字符串,而不是選擇? 即時通訊猜你的代碼片段避免改變選擇莫名其妙? –
這行代碼: Set r = Selection.Range.Paragraphs(i)。Range 基於文檔中當前選擇的內容。 您發佈的第一個方法會保留所有選擇。當你說在第二個方法p.Range.Text成爲選擇。所以當你循環下一次它試圖找到一個很小的選擇段落n,它不會存在。 我的方法是將原始選擇作爲範圍存儲在起始處,然後在每個循環的末尾再次選擇它 –
我明白,謝謝。它爲什麼這樣做?爲什麼操縱文本縮小了選擇範圍?你已經備份了完整的選擇,然後在每個週期結束時恢復它。這是唯一的解決方案嗎? –