返回列表 上一主題 發帖

[發問] 請教一個自寫的日期轉型處理

[發問] 請教一個自寫的日期轉型處理

請教一個自寫的日期轉型處理。
說明:   假設   
1).   Date 函數的取回值為  "2012/3/8",則下列 DateToStr 函數會自動將它轉成 "20120308"
2).   Date 函數的取回值為  "2012/3/18",則下列 DateToStr 函數會自動將它轉成 "20120318"
3).   Date 函數的取回值為  "2012/10/8",則下列 DateToStr 函數會自動將它轉成 "20121008"
4).   Date 函數的取回值為  "2012/10/10",則下列 DateToStr 函數會自動將它轉成 "20121010"

除了以下我自寫的 Function 外, 請問還有沒有更好的 Function 表達方式及寫法?
謝謝各位先進指導!
  1. Sub Test()
  2.     Dim today As String

  3.     today = DateToStr(Date, "/")
  4.     Cells(1, 1).Value = today
  5. End Sub

  6. Function DateToStr(cvDate, delimeter)
  7.     Dim yr, mm, dd, i, k
  8.    
  9.     If (Len(cvDate) < 8 Or Mid(cvDate, 5, 1) <> delimeter) Then
  10.         DateToStr = ""
  11.         Exit Function
  12.     End If
  13.    
  14.     yr = Mid(cvDate, 1, 4)
  15.     mm = Mid(cvDate, 6, 2)
  16.     If (Mid(mm, 2, 1) = delimeter) Then mm = "0" + Mid(mm, 1, 1): dd = Mid(cvDate, 8) Else dd = Mid(cvDate, 9)
  17.     If (Len(dd) = 1) Then dd = "0" + dd
  18.    
  19.     DateToStr = yr + mm + dd

  20.     k = 0
  21.     If (Len(DateToStr) > 0) Then
  22.         For i = 1 To Len(DateToStr)
  23.             If (Mid(DateToStr, i, 1) < "0" Or Mid(DateToStr, i, 1) > "9") Then k = 1
  24.         Next i
  25.     End If
  26.    
  27.     If (k = 1) Then DateToStr = ""
  28. End Function
複製代碼

Sub Test()
   [a1] = Format(Date, "yyyymmdd")
End Sub

TOP

回復 2# oobird

原來這麼簡單啦!
不瞭解 VBA 用法的人就是只會土法煉鋼,
感謝您的指導!

TOP

儲存格格式自訂修改也是可以的

TOP

直接在儲存格格式自訂成
yyyymmdd
egg

TOP

回復 5# eggdd
多謝告知, 我是應用在程式內, 所以後改用了 Format(Date, "yyyymmdd") 的處理。
謝謝您!

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題