[VBA ] 遇到疑似日期的內容複製就會出錯

看板Visual_Basic作者 (雙標文字獄代PO仔)時間4年前 (2019/12/23 15:56), 4年前編輯推噓2(206)
留言8則, 3人參與, 5年前最新討論串1/1
在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://www.ptt.cc/bbs/Visual_Basic/M.1577087792.A.C24.html ※ 編輯: D600dust (203.190.127.212 香港), 12/23/2019 16:05:44

12/23 16:42, 4年前 , 1F
Range("A1").NumberFormat = "@"
12/23 16:42, 1F

12/23 16:45, 4年前 , 2F
預設的數值格式是通用格式,會自動判斷是文字、數值或日期
12/23 16:45, 2F

12/23 16:45, 4年前 , 3F
如果要強制它顯示文字,一種就是你現在的作法在前面加'
12/23 16:45, 3F

12/23 16:46, 4年前 , 4F
另一種就是把數值格式改為文字
12/23 16:46, 4F
謝謝! 很清楚的說明! ※ 編輯: D600dust (203.190.127.212 香港), 12/27/2019 15:40:39

02/15 18:27, 5年前 , 5F
直接用datevalue() 包起來
02/15 18:27, 5F

03/20 22:15, 5年前 , 6F
可以先把要放日期的欄位,設定成文字顯示:Thisworkbo
03/20 22:15, 6F

03/20 22:15, 5年前 , 7F
ok.worksheet("AAA").Columns("A").NumberFormat = "@
03/20 22:15, 7F

03/20 22:15, 5年前 , 8F
",然後再把抓出來的日期丟到A欄就會是你想要的結果了
03/20 22:15, 8F
文章代碼(AID): #1U07Cmma (Visual_Basic)
文章代碼(AID): #1U07Cmma (Visual_Basic)