如何在 VBA 中使用多个可选参数

如何在 VBA 中使用多个可选参数

我正在尝试在 VBA 中做一个简单的 UDF:我想获取日期的四分之一。

我可以轻松制作一个可以运行的基本版本(我是法国人,因此季度标记为三个月并以 T 缩写) :

Public Function Trimestre(MaDate As Date) As String

Trimestre = Year(MaDate) & "-" & "T" & (((Month(MaDate) - 1) \ 3) + 1)

End Function

然后我想添加两种定制的可能性:

  • 允许用户选择分隔符,即-
  • 允许用户选择英文版本,即TQ

我可以一次做一个变体:

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错误

答案1

当您收到错误时,因为您还在Langue公式中输入了参数名称。工作表上的正确公式应该是=Trimestre(C4,,"EN")。如果您的 Excel 设置出现错误,请将逗号更改为分号。

在此处输入图片描述

相关内容