2013-11-21 42 views

回答

1

這是你正在嘗試?

Sub Sample() 
    Debug.Print ConvertTodate(#12/13/2012#) 
    Debug.Print ConvertTodate(#12/12/2012#) 
    Debug.Print ConvertTodate(#12/14/2012#) 
    Debug.Print ConvertTodate(#12/23/2012#) 
    Debug.Print ConvertTodate(Now) 
End Sub 

Function ConvertTodate(d As Date) As String 
    Dim suff As String 
    Dim dt As String 

    dt = Format(d, "mmmm dd, yyyy") 

    Select Case Day(d) 
     Case 0 To 10, 20 To 31 
      Select Case Right(Day(d), 1) 
       Case 1: suff = "st," 
       Case 2: suff = "nd," 
       Case 3: suff = "rd," 
       Case 0, 4 To 9: suff = "th," 
      End Select 
     Case 11 To 20: suff = "th," 
    End Select 

    ConvertTodate = Replace(dt, Day(d) & ",", Day(d) & suff) 
End Function 

enter image description here

注意:根據您的區域設置,您可能需要使用的東西,而不是逗號別的。

+0

'不錯@SiddharthRout :-)腦力運轉這似乎給出了很好的結果,但我必須從字面上理解爲什麼它是錯誤的:-) - Jean-FrançoisCorbett 3分鐘前@@ Jean-FrançoisCorbett:對不起,當這篇文章被刪除時,不得不移動評論。相信我,你不會想知道當我意識到我以前的代碼失敗時我感到多麼尷尬或#2012年12月12日#:P別無選擇,只能採取答案並重新工作! –

1

這應該有效。我在VBA立即窗口中運行了這個。

?Format(Now(),"mmmm dd, yyyy") 
November 21, 2013 
+1

我也有,但不能得到「st」和「nd」和「rd」和「th」s出現 – MyNameIsKhan