如何使用vba代码将值写入单元格而不进行自动类型转换?

Der*_*ván 5 string excel vba type-conversion

这个问题看起来很简单,但我找不到解决方案(我已经在考虑它了:))

好的,所以我只想使用vba代码将一个特定的值放入excel单元格中,就像这样简单:

Cells(1,1).Value2 = "123,456"
Run Code Online (Sandbox Code Playgroud)

问题:这是一个字符串(故意),但excel总是将其转换为数字,并将该数字放入单元格,而不是我想要的字符串.

我怎么能强迫excel不要转换它,只是把我想要的(字符串)放入单元格?

谢谢,

Sea*_*anC 9

Cells(1,1).Value2 = "'123,456"
Run Code Online (Sandbox Code Playgroud)

注意数字之前的单撇号 - 这将表示优秀,后面的任何内容都必须被解释为文本.


小智 8

事实上,正如蒂姆·威廉姆斯(Tim Williams)所评论的那样,使其成功的方式是将格式预先格式化为文本.因此,要通过VBA完成所有操作,只需这样做:

Cells(1, 1).NumberFormat = "@"
Cells(1, 1).Value = "1234,56"
Run Code Online (Sandbox Code Playgroud)

  • 是的,作为变体。但我不需要复杂的比较例程,因为“1”不等于1是完全可以的。问题是,当我将“1”写入单元格,然后将其与“1”进行比较时,结果是false,因为单元格中不再有“1”,而是 1。(您建议的另一部分是一种适用的方法,对我来说仍然令人难以置信的是没有办法告诉 Excel 不要自动执行转换您放入单元格的变量内容。这是可能的?? grrr。:) ) (2认同)