我在excel vba中遇到Format()函数的问题。我试图改变日期格式化单元格的格式以更改其显示方式。但是,每当我调用Format来执行此操作时,我都会收到错误:“编译错误:参数数量错误或属性分配无效。”
这是代码:
Sub test()
Dim given
given = DateSerial(2012, 10, 11)
dateformat = Format(given, "dd/mm/yy")
MsgBox given & vbCrLf & dateformat
End Sub
这只是一个测试功能,应该自行运行并返回“11/10/12”。此代码适用于其他计算机。可能有什么不对?
答案 0 :(得分:5)
如果我今天在Worksheet_Activate()中放入了代码的这个问题并且正在拉我的头发。通过将Format更改为VBA.Format
解决了这个问题所以试试:
Sub test()
Dim given
given = DateSerial(2012, 10, 11)
dateformat = VBA.Format(given, "dd/mm/yy")
MsgBox given & vbCrLf & dateformat
End Sub
答案 1 :(得分:2)
这是因为您可能在项目的其他位置还有一些名为 Sub
的 Format
。因此您会收到错误。
答案 2 :(得分:0)
目前,您默认将given
变量声明为变体。请将其声明为Date
数据类型。为安全起见,请确保只使用Date
CDate()
向Format()
发送DateSerial(CInt(x), CInt(y), CInt(z)
格式,作为您想要的日期样式。
DateSerial输入也应采用以下格式。在你的情况下哪个好。 ;)
OPTION EXPLICIT '------------ please add this to your code to begin for better coding
Sub test()
Dim given as Date '-------- define given as Date type
Dim dateformat as Date
given = DateSerial(2012, 10, 11)
dateformat = Format(CDate(given), "dd/mm/yy") '--------- anyway wrap with CDate() to be sure
MsgBox given & vbCrLf & dateformat
End Sub
代码段:
{{1}}