在部分文本(zh CN、Excel)上设置字体

在部分文本(zh CN、Excel)上设置字体,excel,vba,Excel,Vba,我在这里发现了有关单元格部分格式的问题,但colution根本不起作用(不确定这是否与语言有关) 下面的.text返回单元格的全文,而不是单个字符,因此我无法检查文本是否为西方文本 Sub TMP() ' ' TMP Macro ' For i = 1 To ActiveCell.Characters.Count With ActiveCell.Characters(i) If InStr(1, "ABCDEFGHIJKLMNOPRSTQUVWXYZabcdefghijklmn

我在这里发现了有关单元格部分格式的问题,但colution根本不起作用(不确定这是否与语言有关)

下面的
.text
返回单元格的全文,而不是单个字符,因此我无法检查文本是否为西方文本

Sub TMP()
'
' TMP Macro
'
For i = 1 To ActiveCell.Characters.Count
    With ActiveCell.Characters(i)
    If InStr(1, "ABCDEFGHIJKLMNOPRSTQUVWXYZabcdefghijklmnopqrstuvwxyz1234567890", .Text) > 0     Then
        .Font.Name = Arial
    End If
    End With
Next
End Sub
你知道解决那个小毛病的办法吗

编辑1: 我已经用另一种方法检查了是否:

InStr(1, "ABCDEFGHIJKLMNOPRSTQUVWXYZabcdefghijklmnopqrstuvwxyz1234567890", Mid(ActiveCell.Text, i, 1)) > 0
但它仍然不会更改
.font.name
属性(但如果需要,会更改颜色)

编辑2: 我发现了问题所在:在合并的单元格上。没注意到我把它们混在一起了。我敢打赌,如果我能找到方法,下面的答案将适用于
Mid
,在没有视觉效果的情况下取消合并单元格。

试试:

Dim I As Long
For I = 1 To ActiveCell.Characters.Count
    With ActiveCell.Characters(I, 1)
        If .Text Like "[A-Za-z0-9]" Then
            .Font.Name = "Arial"
        End If
    End With
Next I

您想做什么?将所有西方([a-z][a-z][0-9])字符的字体更改为Arial。使用
characters
对象的第二个参数表示您希望返回的字符数。字体对象的
名称
应该是字符串。使用
Like
操作符进行比较。(见下面我的答案)