[VBA ] 遇到疑似日期的内容复制就会出错

楼主: D600dust (一世六百尘)   2019-12-23 15:56:30
在AAA工作表里面的A1储存格内容是01.2020 (或者是'01.2020)
(这是从SAP捞下来的日期资讯 在EXCEL中会被惊叹号提示储存格格式有问题)
我为了移动该报表的资料到另外一张表 写了一个VBA
结果发现该疑似日期的资料都会出错 自动把0抹去了
我写了一段检查以及说明用的小程式码如下
Sub temp()
Worksheets("AAA").Activate
Dim tmp As String
'不知道宣告不宣告有没有影响
tmp = Worksheets("AAA").Range("A1").Value
MsgBox tmp
'到这里会正常显示出 "01.2020"
Worksheets("AAA").Range("A1") = tmp
'这时 原来的 "01.2020" 会被覆蓋为 "1.202"
'意思是如果我想把A1的内容复制到其他储存格 会无法正确的复制"01.2020"
'我试着使用cstr(tmp) 也得到一样失败的结果(就像在复制过程中被强制转换为数字去0)
请问遇到这种问题我应该检查或者修正什么
目前我是硬改成Worksheets("AAA").Range("A1") = "'" & tmp
但是知其然却不知其所以然
谢谢
作者: newacc (XD)   2019-12-23 16:42:00
Range("A1").NumberFormat = "@"默认的数值格式是通用格式,会自动判断是文字、数值或日期如果要强制它显示文字,一种就是你现在的作法在前面加'另一种就是把数值格式改为文字
作者: waiter337 (给开司一罐苏格登)   2018-02-15 18:27:00
直接用datevalue() 包起来
作者: pipisn1024 (Jason)   2018-03-20 22:15:00
可以先把要放日期的字段,设定成文字显示:Thisworkbook.worksheet("AAA").Columns("A").NumberFormat = "@",然后再把抓出来的日期丢到A栏就会是你想要的结果了

Links booklink

Contact Us: admin [ a t ] ucptt.com