格式化单元格中的单个字符-无法解释的行为

时间:2019-08-02 00:43:12

标签: excel vba

我在宏中有用于格式化单元格中各个字符的代码。最近,它已停止工作,仅格式化所有字符或完全不格式化。

我将代码减少到仅几行即可进行测试,但它在两台不同的计算机(一台Mac,一台PC)上均失败。我已经重启了很多次。两台机器都表现出相同的错误行为。

Sub formattest()
    Workbooks("Text.xlsm").Worksheets("Sheet1").Cells(1, 1).Characters(Start:=1, Length:=1).Font.Color = RGB(0, 0, 0)
    Workbooks("Text.xlsm").Worksheets("Sheet1").Cells(1, 1).Characters(Start:=1, Length:=1).Font.Bold = True
End Sub

Sub formattest2()
    Workbooks("Text.xlsm").Worksheets("Sheet1").Cells(1, 1).Characters(1, 1).Font.Color = RGB(0, 0, 0)
    Workbooks("Text.xlsm").Worksheets("Sheet1").Cells(1, 1).Characters(1, 1).Font.Bold = True
End Sub

Sub formattest3()
    With Workbooks("Text.xlsm").Worksheets("Sheet1").Cells(1, 1).Characters(1, 1).font
        .Color = RGB(0, 0, 0)
        .Bold = True
    End With
End Sub

在所有三个子例程中,我希望仅对单元格1,1中的第一个字符进行格式化,但这不会发生。我认为这是Excel进入奇怪状态的原因,这就是为什么我在两台不同的计算机上尝试并重新启动的原因。发生了什么,为什么它曾经起作用却不再起作用?我可以做些什么来实现自己想要的行为吗?

1 个答案:

答案 0 :(得分:1)

只需结束这个问题即可:如果尝试设置数字的不同数字(而不是文本中的字符)的格式,则会遇到此问题。

要避免这种情况,请将单元格的格式更改为 ,或者在数字前加一个撇号',以将其强制为文本。

如果您必须将数字保留为数字而不是文本,我认为这是不可能的。