Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何使用VBA省略arglist中的最后一个变量_Excel_Vba - Fatal编程技术网

Excel 如何使用VBA省略arglist中的最后一个变量

Excel 如何使用VBA省略arglist中的最后一个变量,excel,vba,Excel,Vba,调用具有3个参数(分别为a、b和c)的函数时,其中最后两个参数是可选的。Excel似乎迫使我始终提供最新的变量。当不提供参数c时,我收到一个编译错误/语法错误。 但我不明白为什么? 如何从参数列表中省略最后一个变量 功能 Function passing_variables(a, Optional b = 1, Optional c = 1) passing_variables = a * b * c End Function 不起作用 Sub main_procedure C

调用具有3个参数(分别为a、b和c)的函数时,其中最后两个参数是可选的。Excel似乎迫使我始终提供最新的变量。当不提供参数c时,我收到一个编译错误/语法错误。
但我不明白为什么? 如何从参数列表中省略最后一个变量

功能

Function passing_variables(a, Optional b = 1, Optional c = 1)
    passing_variables = a * b * c
End Function
不起作用

Sub main_procedure
    Cells(17, 2) = passing_variables(2, 4 , )
End Sub
有效

Sub main_procedure
    Cells(17, 2) = passing_variables(2, ,4)
End Sub
可能的解决方法是提供指定变量,如

所述,可能只是输入错误

Sub main_procedure
    Cells(17, 2) = passing_variables(2, 4)
End Sub
也许只是打字错误

Sub main_procedure
    Cells(17, 2) = passing_variables(2, 4)
End Sub

你只是省略了它。例如:

Sub Test()
    Debug.Print MyFunction(Var1:=2, Var2:=4)
    Debug.Print MyFunction(Var1:=2, Var2:=4, Inverse:=True)
End Sub

Function MyFunction(Var1 as Long, Var2 as Long, Optional Inverse as Boolean = False)
    MyFunction = Var1 * Var2
    If Inverse Then MyFunction = MyFunction * -1
End Function

在第一个调用中,省略了“Inverse”。

您只需省略它即可。例如:

Sub Test()
    Debug.Print MyFunction(Var1:=2, Var2:=4)
    Debug.Print MyFunction(Var1:=2, Var2:=4, Inverse:=True)
End Sub

Function MyFunction(Var1 as Long, Var2 as Long, Optional Inverse as Boolean = False)
    MyFunction = Var1 * Var2
    If Inverse Then MyFunction = MyFunction * -1
End Function

在第一次调用中,省略了“Inverse”。

第一次调用时,您不需要最后一个命令。您是对的。你不能那样做。您只需使用
Cells(17,2)=传递变量(2,4)
谢谢,我已经习惯了Python,我相信是这种情况。第一个,您不需要最后一个命令。您是对的。你不能那样做。你只需要使用
Cells(17,2)=传递变量(2,4)
谢谢,我已经习惯了我认为是这种情况的Python。至少不是故意的:D,我习惯了不是这种情况的Python。至少不是故意的:D,我习惯了不是这种情况的Python。