我认为以下两个程序将是相同的,他们为什么不是?范围变量与段落变量不同的行为与选择
此代码:
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,它不会存在。 我的方法是将原始选择作为范围存储在起始处,然后在每个循环的末尾再次选择它 –
我明白,谢谢。它为什么这样做?为什么操纵文本缩小了选择范围?你已经备份了完整的选择,然后在每个周期结束时恢复它。这是唯一的解决方案吗? –