单元格值为数字时,为什么Characters.Count属性失败?

时间:2018-10-17 16:15:53

标签: excel vba excel-vba

尝试代码:

n = Worksheets("Sheet1").Range("A1").Characters.Count 
Worksheets("Sheet1").Range("A1") _ 
 .Characters(n, 1).Font.Superscript = True

来自https://docs.microsoft.com/en-us/office/vba/api/excel.font.superscript

我注意到它在A1中以数字值失败。 因此,经过一些研究,我发现它适用于字符串,并且如果我们在A1中完全写入数字值,它将失败:

Sub TestMe()

    Dim a As Variant
    Range("A1") = "2"
    a = Array(Range("A1").Characters)
    Debug.Print a(0).Count

End Sub

显然是因为无法获取Characters类的Count属性而导致的错误,如本地窗口中所示:

enter image description here


当然,如果A1中有一个值不能解析为数字,那么一切都可以:

Sub TestMe()

    Dim a As Variant
    Range("A1") = "a34"
    a = Array(Range("A1").Characters)
    Debug.Print a(0).Count

End Sub

产生这个:

enter image description here

问题:是否有一些与此相关的文档来解释此错误的原因,或者这是隐藏的“功能”,还是某种内部Excel优化,将数字值解析为数字?还是文档中的“字符不是集合”的注释就是这个意思?

1 个答案:

答案 0 :(得分:0)

您的第一个示例使IsNumeric()返回true,因此将其视为Characters属性所需的数字而不是文本。

Cells(1, 1) = "123.4"
Debug.Print IsNumeric(Cells(1, 1)) ' returns true

Cells(1, 1) = "123a"
Debug.Print IsNumeric(Cells(1, 1)) ' returns false