[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