我编写了一个函数来查找静态集合中的序列日期代码。以下是该功能的小片段。
Function Dcode(IntNum as Integer)
set dict = New Scripting.Dictionary
dict.Add 101, 40544
dict.Add 102, 40575
dict.Add 103, 40603
dict.Add 104, 40634
dict.Add 105, 40664
Dcode = FormatDateTime(dict(IntNum),vbShortDate)
End Function
代码有效,例如,如果101在单元格A1中,则在B1中输入以下公式:
=Dcode(A1)
结果是2011年1月1日,这是正确的。但是,单元格编号格式为“常规”,如果您尝试按日期过滤,则不能,因为每个日期都是单独列出而不是按年,月,日列出。在函数结束之前,任何人都可以帮助更改单元格格式吗?
我尝试在函数的开头添加:
Selection.NumberFormat = "m/dd/yyyy"
这没用,实际上似乎无能为力。另外要添加一些说明,我希望在完成时创建一个全局函数,所以希望这可以在不保存为.xlsm文件的情况下完成
答案 0 :(得分:1)
要扩展我的评论,您可以这样做:
Function Dcode(IntNum As Integer) As Date
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add 101, 40544
dict.Add 102, 40575
dict.Add 103, 40603
dict.Add 104, 40634
dict.Add 105, 40664
Dcode = CDate(dict(IntNum))
End Function
答案 1 :(得分:0)
我不知道您可以在函数中添加一些代码并格式化调用单元格
虽然您可以将以下内容放在工作表代码窗格
中Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(Target.Formula, "=DCode") > 0 Then Target.NumberFormat = "m/dd/yyyy"
End Sub