作者D600dust (双标文字狱代PO仔)
看板Visual_Basic
标题[VBA ] 遇到疑似日期的内容复制就会出错
时间Mon Dec 23 15:56:30 2019
在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
但是知其然却不知其所以然
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.190.127.212 (香港)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1577087792.A.C24.html
※ 编辑: D600dust (203.190.127.212 香港), 12/23/2019 16:05:44
1F:→ newacc: Range("A1").NumberFormat = "@" 12/23 16:42
2F:→ newacc: 预设的数值格式是通用格式,会自动判断是文字、数值或日期 12/23 16:45
3F:→ newacc: 如果要强制它显示文字,一种就是你现在的作法在前面加' 12/23 16:45
4F:→ newacc: 另一种就是把数值格式改为文字 12/23 16:46
谢谢! 很清楚的说明!
※ 编辑: D600dust (203.190.127.212 香港), 12/27/2019 15:40:39
5F:推 waiter337: 直接用datevalue() 包起来 02/15 18:27
6F:推 pipisn1024: 可以先把要放日期的栏位,设定成文字显示:Thisworkbo 03/20 22:15
7F:→ pipisn1024: ok.worksheet("AAA").Columns("A").NumberFormat = "@ 03/20 22:15
8F:→ pipisn1024: ",然後再把抓出来的日期丢到A栏就会是你想要的结果了 03/20 22:15