VBA:调用函数

时间:2015-07-07 18:19:47

标签: excel vba function excel-vba

我正在努力整理我的编码。为此,我想将很多代码转换为函数。

在Java中,它的工作方式(确切地说是?)我的代码如下所示。

OriginateDateItems()将执行以下功能:

Function OriginateDateItems()

currentMonth = Format(Date, "mmmm") 'July
currentDate = Format(Date, "mm-dd-yy") '06-09-15
currentYear2char = Format(Date, "yy") '15
currentYear4char = Format(Date, "yyyy") '2015
currentFiscalMonth = Format(DateAdd("m", 1, Date), "mm") '08
wsDate = currentFiscalMonth & currentYear4char '082015

End Function

是否有人能够解释如何在不使用=或某种类型的情况下调用函数?

非常感谢。

4 个答案:

答案 0 :(得分:2)

你想要一个sub而不是一个函数。函数用于返回值。

更改

Function OriginateDateItems()

Sub OriginateDateItems()

然后通过

调用它
OriginateDateItems

您不需要()来调用子。 要调用函数,你会

value = functionName()

答案 1 :(得分:2)

>>> test[0] IndexError: 0-d arrays can't be indexed >>> dict(test) TypeError: iteration over a 0-d array >>> test.astype(dict) array({'one': 1}, dtype=object) # still in array 始终返回一个值。所以它意味着用作Function

现在something = OriginateDateItems()只是为了运行一些东西。

如果您将函数编写为sub:

Sub

然后你所有的变量(currentMonth,currentYear等)必须是全局的(在任何sub之外),否则它们是不可见的。

只需将其称为

即可
Sub OriginateDateItems()

    currentMonth = Format(Date, "mmmm") 'July
    vcurrentDate = Format(Date, "mm-dd-yy") '06-09-15
    currentYear2char = Format(Date, "yy") '15
    currentYear4char = Format(Date, "yyyy") '2015
    currentFiscalMonth = Format(DateAdd("m", 1, Date), "mm") '08
    wsDate = currentFiscalMonth & currentYear4char '082015

End Sub

如果您希望sub将其返回到调用它的代码,则可以将所有参数传递为Call OriginateDateItems

ByRef

然后你称之为:

Sub OriginateDateItems(ByRef CurrentMonth, byref vcurrentDate, .....)

    currentMonth = Format(Date, "mmmm") 'July
    vcurrentDate = Format(Date, "mm-dd-yy") '06-09-15
    currentYear2char = Format(Date, "yy") '15
    currentYear4char = Format(Date, "yyyy") '2015
    currentFiscalMonth = Format(DateAdd("m", 1, Date), "mm") '08
    wsDate = currentFiscalMonth & currentYear4char '082015

End Sub

答案 2 :(得分:1)

您可以通过以下两种方式调用函数:

'calling function without parentheses
OriginateDateItems

'calling function with parentheses
Call OriginateDateItems()

如果您的函数没有参数,编辑器可能会在第二个示例中删除您的括号。

正如Chuck所说,你也可以改变"功能"在你的代码中" Sub"如果没有返回值。它相当于" void Function"在Java中。除非你有参数,否则这对上面的调用语法没有任何影响。

如果您有参数并使用Call或返回值,则需要括号。

答案 3 :(得分:0)

只需更改

即可
Function OriginateDateItems()

到子

Sub OriginateDateItems()

然后您可以通过名称

调用您的函数
相关问题