2013-11-21 41 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