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的,也请回答下