VBA – 如何调用一段代码?

我对Excel中的VBA世界还很陌生,所以这可能是一个非常明显的问题。

我有两段代码,我经常在整个我写的长脚本中使用。 我想要做的是理想的给这两个代码段的名称,然后在需要的时候“调用”它们,而不是每次写出它们(大约每行30行代码)。

这是可能的,如果是这样,我该怎么做?

例如,如果满足条件,则有2个variables保持添加;

 Sub Main() Dim x As Double Dim y As Double Dim sum As Double x = 2 y = 3 If x > y And x > 0 And y > 0 Then sum = x + y End If x = 7 y = 8 If x > y And x > 0 And y > 0 Then sum = x + y End If End Sub 

遵循DRY原则,您可能需要创build一个函数。 一个函数需要2个参数,如果满足条件则返回总和,所以你可以反复使用它,而不必在整个地方重复if statement

例如

 Function AddIfConditionMet(x As Double, y As Double) If x > y And x > 0 And y > 0 Then AddIfConditionMet = x + y Else AddIfConditionMet = -1 End If End Function 

每次调用这个函数时,它都会检查条件 – 如果符合条件,则会添加xy否则返回-1

示例代码

 Sub Main() Dim x As Double Dim y As Double Dim sum As Double x = 2 y = 3 sum = AddIfConditionMet(x, y) ' returns -1 Debug.Print sum x = 10 y = 5 sum = AddIfConditionMet(x, y) ' returns 15 Debug.Print sum End Sub Function AddIfConditionMet(x As Double, y As Double) If x > y And x > 0 And y > 0 Then AddIfConditionMet = x + y Else AddIfConditionMet = -1 End If End Function 
 sub main dim a as long call First_Macro ( arg1, Arg2 , Arg3) 'same as : First_macro arg1, Arg2, Arg3 a= Some_Function_Name ( Arg1, Arg2, Arg3) End sub Sub First_macro (Byval arg 1 as string, byval arg2 as long, byref arg3 as range) 'do something end sub Function Some_Function_Name ( Arg1, Arg2, Arg3) as long 'returns a Long type value 'Do something if sometthing happens then Some_Function_Name=x else Some_Function_Name=x+1 'for example end if end function