带可选参数的功能

时间:2015-05-26 19:36:07

标签: excel vba excel-vba

我正在尝试使用可选参数在VBA中学习和实现一个Function。给定一个字符或子字符串,我试图将字符串中的值分开。

Private Function SeperateString(MainString As String, Seperator As String) As String
{

 // Body 

}

例如:我想使用分隔符“/”使用分隔符“ - ”或“1/2/3/4/5”分隔“1-2-3-4-5”。

我将使用Instr和其他函数编写逻辑。我的疑问是我想传递一个分隔符所以我不需要为每个编写一个单独的函数,并且如果没有传递则希望“ - ”是默认值。我能这样做吗?

3 个答案:

答案 0 :(得分:6)

Private Function SeparateString(MainString as String, 
                                Optional Separator as String = "-") As String

哦,这是VBA。没有{}而没有//,但我确定你知道......

但是,我必须建议,使用Split()可能比编写自己的更好。

答案 1 :(得分:5)

假设您要将Separator设置为可选参数,请尝试以下操作:

Private Function SeperateString(MainString As String, _
           Optional Seperator As String = "-") As String

 'Body 
     SeperateString = "result of function"
End Function

<强>用法:

result = SeperateString("whatever-it-is") 'uses default separator
result = SeperateString("whatever-it-is", "*") 'uses another separator

https://msdn.microsoft.com/en-us/library/sect4ck6.aspx

答案 2 :(得分:4)

你正在使用VBA而不是C#,所以不要使用那些花括号。

当您键入第一行并按 Enter 时,VBE将自动添加End Function

Private Function SeperateString(MainString As String, Seperator As String) As String

End Function

要使参数可选,请使用前面的关键字Optional

实施例

Private Function SeperateString(MainString As String, Optional Seperator As String = "-") As String

End Function