我正在尝试在 VBA 中做一个简单的 UDF:我想获取日期的四分之一。
我可以轻松制作一个可以运行的基本版本(我是法国人,因此季度标记为三个月并以 T 缩写) :
Public Function Trimestre(MaDate As Date) As String
Trimestre = Year(MaDate) & "-" & "T" & (((Month(MaDate) - 1) \ 3) + 1)
End Function
然后我想添加两种定制的可能性:
- 允许用户选择分隔符,即
-
- 允许用户选择英文版本,即
T
用Q
我可以一次做一个变体:
Public Function Trimestre(MaDate As Date, Optional Langue As String = "FR") As String
If Langue = "FR" Then
Trimestre = Year(MaDate) & "-" & "T" & (((Month(MaDate) - 1) \ 3) + 1)
End If
If Langue = "EN" Then
Trimestre = Year(MaDate) & "-" & "Q" & (((Month(MaDate) - 1) \ 3) + 1)
End If
End Function
或者
Public Function Trimestre(MaDate As Date, Optional Sep As String = "-") As String
Trimestre = Year(MaDate) & Sep & "T" & (((Month(MaDate) - 1) \ 3) + 1)
End Function
但是当我尝试将两者结合起来时,却出现了错误。
例如,
Public Function Trimestre(MaDate As Date, Optional ByVal Sep As String = "-", Optional Langue As String = "FR") As String
If Langue = "FR" Then
Trimestre = Year(MaDate) & Sep & "T" & (((Month(MaDate) - 1) \ 3) + 1)
End If
If Lanque = "EN" Then
Trimestre = Year(MaDate) & Sep & "Q" & (((Month(MaDate) - 1) \ 3) + 1)
End If
End Function
使用 with=Trimestre(C14;Langue="EN")
会出现#Value
错误