作者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/m.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