Board logo

標題: [發問] 請教一個自寫的日期轉型處理 [打印本頁]

作者: c_c_lai    時間: 2012-4-19 10:01     標題: 請教一個自寫的日期轉型處理

請教一個自寫的日期轉型處理。
說明:   假設   
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
複製代碼

作者: oobird    時間: 2012-4-19 10:51

Sub Test()
   [a1] = Format(Date, "yyyymmdd")
End Sub
作者: c_c_lai    時間: 2012-4-19 11:04

回復 2# oobird

原來這麼簡單啦!
不瞭解 VBA 用法的人就是只會土法煉鋼,
感謝您的指導!
作者: chen_cook    時間: 2012-4-19 15:12

儲存格格式自訂修改也是可以的
作者: eggdd    時間: 2012-4-20 14:23

直接在儲存格格式自訂成
yyyymmdd
作者: c_c_lai    時間: 2012-4-20 16:04

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)