我在MS Excel 2002中编写了以下测试函数:
Function someDate() As Date
someDate = Now()
End Function
然后我在单元格中使用该函数,如=someDate()
。但该值显示为浮点数
但是,如果我执行此操作=now()
,则单元格值将按预期显示为日期。
如何编写返回日期的函数,Excel会自动将该值识别为日期?
答案 0 :(得分:2)
已编辑以显示可能的操作系统日期格式
您可以按原样保留您的功能,并在ThisWorkbook
代码窗格中添加此代码:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim cell As Range
Dim dateSeparator As String
dateSeparator = Application.International(xlDateSeparator) '<--| retrieve OS date separator
For Each cell In Target
If cell.Formula = "=someDate()" Then
Select Case Application.International(xlDateOrder) '<--| query OS date format
Case 0
cell.NumberFormat = "mm" & dateSeparator & "dd" & dateSeparator & "yyyy"
Case 1
cell.NumberFormat = "dd" & dateSeparator & "mm" & dateSeparator & "yyyy"
Case 2
cell.NumberFormat = "yyyy" & dateSeparator & "mm" & dateSeparator & "dd"
End Select
End If
Next
End Sub
答案 1 :(得分:1)
不可能AFAIK,只需编写一些代码以使Excel将该单元格解释为日期,
Selection.NumberFormat = "m/d/yyyy"
虽然我确定你知道:)
强制日期格式的其他方法是使单元格成为公式的结果,其中操作数也是日期,因此您可以将0
格式化为日期并添加到您的单元格中,它将是虽然这是一个很好的日期,但大多数Excel程序员都会使用某个VBA来格式化单元格。
答案 2 :(得分:0)
Excel将日期存储为数字,所以您看到的是数字格式的日期 - 在您尝试做的任何事情的最后,无论是在宏中还是输出到单元格,只需转换回到最后使用的格式为VBA和TEXT for Excel。
希望这有帮助, TheSilkCode