【发布时间】:2019-03-29 08:02:37
【问题描述】:
为什么这个 VBA 代码不起作用?这些文档使用了一种称为 rage, wait, arial 的特殊字体。我想遍历文档的每个字母,并且每当.Font = "*rage*" 我想遍历十几个字母时。 (我的中风 - 耐心。)
Sub grandma()
Dim doc As Document
Set doc = ActiveDocument
Dim Counter As Integer
For i = 1 To 6
doc.Range.Characters.Count
If doc.Range.Characters(i).Font.Name = "*rage*" Then
doc.Range.Characters(i).Font.Name = "Waiting for the Sunrise"
End If
If doc.Range.Characters(i).Font.Name = "*wait*" Then
doc.Range.Characters(i).Font.Name = "Rage Italic"
End If
If doc.Range.Characters(i).Font.Name = "*arial*" Then
doc.Range.Characters(i).Font.Name = "Arial Nova Cond Light"
End If
j = i
MsgBox "Hi! " & i
Next i
End Sub
【问题讨论】:
-
您将
Counter声明为整数类型,但使用了未声明的变量i?不是问题,而是您应该在每个模块的顶部使用Option Explicit的更多理由。 -
如果
foo等于字符串文字"abc*",If foo = "abc*"将为真。相等/比较运算符=不使用通配符。 -
这些字体名称是否真的包含星号 -
*?请注意,使用 Word 的内置查找/替换功能可能会更快、更高效。