谁帮我看一个WORD VBA代码,关于LOOP WHILE

Sub ConvEnglish()

Dim myTemp As String
Dim myLen As Long
Dim myCount As Long

myLen = ThisDocument.Range.Characters.Count
myCount = 1

ThisDocument.Range.Characters.First.Select
Do
myTemp = Selection.Text
'英文区域开始
If AscW(myTemp) < (AscW("z") + 1) And AscW(myTemp) >= 32 And Len(myTemp) <= 1 Then
Selection.Font.Name = "Times New Roman"
End If
If myLen = myCount Then Exit Do
myCount = myCount + 1
If (myCount Mod 100) = 0 Then Debug.Print myCount
Selection.Next().Select
Loop While True

End Sub

代码如上。
这个代码是用来把文档中的英文数字设成字体为TIMES NEW ROMAN。
我的问题是最后一句,LOOP WHILE TRUE

第一个问题:这里并没有指明到底是指哪个布尔值为TRUE时运行循环,我试验了一下调成LOOP WHILE FALSE的话,则只会运行一个字符,在第2个字符处就停住,所以我猜测这个TRUE是指上一条SELECTION.NEXT().SELECT不为错误(即还存在下一个字符),那么如果要把这句语句写得更完整易读的话应该怎么写呢?
第二个问题:此外,即使我不设WHILE TRUE这个条件,事实上在WORD中执行该宏同样会在运行完成后在文档末尾处停止,并不会死循环或出错,请问这个条件到底有没有必要呢?
第三个问题:如果我用F8键在VBA工具中逐步执行的话,则在文档末尾处, Selection.Next().Select这一条就会出错,但是执行整个宏时则没有错误提示,请问这是为何??

问题有点多,希望3个分别较详细的回答,谢谢。
不好意思,第三个问题不是关于LOOP WHILE TRUE的,也请回答下

1。do
loop while true
永远进行,死循环
跟SELECTION.NEXT().SELECT没有关系
2。不加默认是true。
没有死循环是因为中间判断了
If myLen = myCount Then Exit Do
当期位置等于结尾 则跳出去
3。应该不会报错
报错的话原因就是当期位置已经是最后,没有下一个位置可选了(但是前面
应该已经跳出去了)
4。接第一个问题,可以改为
do
loop while 当期位置<=总长
温馨提示:答案为网友推荐,仅供参考
相似回答