【问题标题】:Excel, VBA, convert number to text with numberformat="@" working or not?Excel,VBA,将数字转换为带有 numberformat="@" 的文本是否有效?
【发布时间】:2017-07-07 01:42:37
【问题描述】:

区分文本和数字的基本规则是文本左对齐,数字右对齐。

在一个空白单元格中,我将格式设置为文本。然后,我输入了25。这个“数字”是左对齐的,暗示它是文本。单元格的左上角有一个绿色三角形,上面写着

“单元格中的数字被格式化为文本...”。

到目前为止一切顺利。

在下面的单元格中,我输入了25。它是右对齐的,暗示它是数字。然后我在上面运行代码Range.NumberFormat="@"。它变成了左对齐。但是,没有绿色三角形。

当我使用=IF(A1="25",1,0) 检查第一个单元格时,公式返回1。下一个单元格上的相同测试(当然是不同的地址)返回0

在我看来,代码将25 转换为文本(从对齐方式判断),同时没有将25 转换为文本(从缺少绿色三角形和IF 测试判断。)

发生了什么事?

【问题讨论】:

  • 好的,所以输入数字,然后手动将单元格的格式更改为文本使其左对齐数字,但不会将数字更改为字符串。用 VBA 做也是一样的。只有在输入数字之前将数字格式设置为文本时,数字才会存储为字符串。
  • 这个有效:Range("A1") = Str(Range("A1"))Range("A1") = "'"&Range("A1")

标签: vba excel excel-2010


【解决方案1】:

这可能不是最有效的方法,但确实有效:

Option Explicit
Sub convertText()
    Dim testValue As Variant
    testValue = ActiveCell.Value & ""
    ActiveCell.ClearContents
    ActiveCell.NumberFormat = "@"
    ActiveCell.Value = testValue
End Sub

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多