Excel在数字中显示零,没有错误

Excel在数字中显示零,没有错误,excel,vba,numbers,format,Excel,Vba,Numbers,Format,在excel VBA中,如何在不在单元格中生成“数字存储为文本”错误的情况下显示以下数字 1.0 1.1 1.2 . . 1.99 1.100 1.101 1.102 . . 1.20 1.21 1.22 . . etc... 只需记录需要显示的小数位数。例如: Sub marine() Dim s As String, i As Long, a s = "1.0,1.1,1.2,1.99,1.100,1.101,1.102,1.20,1.21,1.22" arr =

在excel VBA中,如何在不在单元格中生成“数字存储为文本”错误的情况下显示以下数字

1.0
1.1
1.2
.
.
1.99
1.100
1.101
1.102
.
.
1.20
1.21
1.22
.
.
etc...

只需记录需要显示的小数位数。例如:

Sub marine()
    Dim s As String, i As Long, a
    s = "1.0,1.1,1.2,1.99,1.100,1.101,1.102,1.20,1.21,1.22"
    arr = Split(s, ",")

    i = 1
    For Each a In arr
        With Cells(i, 1)
            .Value = a
            brr = Split(a, ".")
            .NumberFormat = "0." & Application.Rept("0", Len(brr(1)))
        End With
        i = i + 1
    Next a
End Sub

这是基于一个奇怪的事实,即如果VBA将类似字符串的数字放入单元格,Excel会将其转换为数字:

Sub demo()
    Dim s As String
    s = "1.230"
    Range("A1").Value = s
End Sub
编辑#1:

另一方面,如果要输入看起来像数字的文本,但避免升起错误标志,则:

Sub Macro1()
    Application.ErrorCheckingOptions.NumberAsText = False
End Sub

系统上的小数点分隔符可以是逗号吗?
1,1
是否会触发相同的警告?Excel使用“区域设置”确定用于设置数字和日期格式的字符。分隔函数参数的字符是“列表分隔符”字符-在“en-US”配置中,是逗号,但“十进制分隔符”是点。在其他配置中,十进制分隔符可以是逗号,列表分隔符可以是分号。VBA代码非常以美国为中心,但Excel使用系统设置。这意味着,在文章中加入一个简短的代码示例(请参阅)将数字写入工作表单元格并获取这些“数字存储为文本”警告将对您有所帮助。如果您的代码正在将数值分配给
范围.Value
,则不应该有任何原因发生这种情况。它们是真的数字,还是它们在识别您错误地认为是数字的标记?X-Y问题。您正在询问如何设置数字格式,而真正的问题是如何关闭Excel中的功能?这个问题不是关于编程的,实际上你是对的。它们是代币,但excel认为它们是数字,并抛出了错误。如果我转换为文本,我会得到错误。我想停止这个错误。