【问题标题】:Excel Display Zeros in Number Without Error [closed]Excel在数字中显示零而没有错误[关闭]
【发布时间】:2019-05-12 17:59:53
【问题描述】:

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

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

【问题讨论】:

  • 您系统上的小数点分隔符可以是逗号吗? 1,1 会发出同样的警告吗? Excel 使用“区域设置”来确定用于格式化数字和日期的字符。分隔函数参数的字符是“列表分隔符”字符 - 在“en-US”配置中,这是一个逗号,但“十进制分隔符”是一个点。在其他配置中,小数分隔符可能是逗号,列表分隔符可能是分号。 VBA 代码非常以美国为中心,但 Excel 使用系统设置。
  • 也就是说,edit 在您的帖子中包含一个简短示例(请参阅minimal reproducible example)是您用来将数字写入工作表单元格并获取这些“数字存储”的代码的简短示例(参见minimal reproducible example)作为文本”警告。如果您的代码将数值分配给 Range.Value,则应该没有任何理由发生这种情况。
  • 它们真的是数字,还是它们识别出您错误地认为是数字的标记?
  • X-Y 问题。您在问如何格式化数字,真正的问题是如何关闭 Excel 中的功能?这个问题与编程无关。
  • 其实AJD你是对的。它们是标记,但 excel 认为它们是数字并抛出错误。如果我转换为文本,我会收到错误消息。我想停止错误。

标签: excel vba numbers format


【解决方案1】:

只需跟踪需要显示的小数位数即可。例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多