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

Excel 在单元格中格式化单个字符-无法解释的行为,excel,vba,Excel,Vba,我有宏中的代码,用于格式化单元格中的单个字符。最近,它已经停止工作,只格式化所有字符,或者根本不格式化 我已经将代码减少到只有几行要测试,但它在两台不同的机器(一台Mac,一台PC)上失败。我已经重新启动了很多次。两台机器表现出相同的错误行为 Sub formattest() Workbooks("Text.xlsm").Worksheets("Sheet1").Cells(1, 1).Characters(Start:=1, Length:=1).Font.Color = RGB(0,

我有宏中的代码,用于格式化单元格中的单个字符。最近,它已经停止工作,只格式化所有字符,或者根本不格式化

我已经将代码减少到只有几行要测试,但它在两台不同的机器(一台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进入了一种奇怪的状态,这就是为什么我尝试在两台不同的机器上重新启动。发生了什么?为什么它曾经起作用,但不再起作用?我能做些什么来实现我想要的行为吗?

只是结束这个问题:如果你试图格式化数字的不同数字,而不是文本中的字符,你会遇到这个问题

要避免这种情况,请将单元格的格式更改为文本,或在数字前面添加撇号
,以强制将其转换为文本


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

该单元格中的文本是什么?您的代码对我来说很好。如果您以不同的方式指定单元格,如使用Select或Activecell或Range(单元格(1,1),单元格(1,1)),是否仍然不正确?我会说试试控制面板>程序>Microsoft Office>修复,但您已经在另一台机器上进行了测试,所以我怀疑这是否有帮助。我认为您刚刚了解了问题的真相。我曾经使用带空格的数字(当它工作时),但现在我只使用数字(我将其用作字符串)。字母字符可以使用单个字符格式,但不能使用数字。但我只是尝试以一种有效的方式格式化一个数字(比如文本格式),但没有成功,但我还没有让它起作用。它不适用于这样的数字,除非您将单元格格式更改为文本或在数字前面添加撇号。否则我认为你运气不好。BigBen,我认为它现在起作用了。我将单元格格式化为文本单元格,一切正常。非常感谢你指出这个问题。谢谢你的评论以及斯塔克斯。