Excel VBA-如何调用代码段?

Excel VBA-如何调用代码段?,excel,vba,Excel,Vba,我对Excel中的VBA世界仍然很陌生,所以这可能是一个非常明显的问题 在我编写的长脚本中,我经常使用两段代码。理想情况下,我想做的是给这两段代码起个名字,然后在需要时“调用”它们,而不是每次都把它们写出来(每段大约30行代码) 这可能吗?如果可能,我怎么做?例如,如果您有两个变量,并且在满足条件的情况下不断添加这些变量 Sub Main() Dim x As Double Dim y As Double Dim sum As Double x = 2

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

在我编写的长脚本中,我经常使用两段代码。理想情况下,我想做的是给这两段代码起个名字,然后在需要时“调用”它们,而不是每次都把它们写出来(每段大约30行代码)


这可能吗?如果可能,我怎么做?

例如,如果您有两个变量,并且在满足条件的情况下不断添加这些变量

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
按照以下步骤,您可能需要创建一个函数。一个函数将接受2个参数并在满足条件时返回总和,因此您可以反复使用它,而无需到处重复
if语句

比如说

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
每次调用此函数时,它都会检查条件-如果条件满足,则会添加
x
,如果条件不满足,则会返回
-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 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
按照以下步骤,您可能需要创建一个函数。一个函数将接受2个参数并在满足条件时返回总和,因此您可以反复使用它,而无需到处重复
if语句

比如说

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
每次调用此函数时,它都会检查条件-如果条件满足,则会添加
x
,如果条件不满足,则会返回
-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 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
按照以下步骤,您可能需要创建一个函数。一个函数将接受2个参数并在满足条件时返回总和,因此您可以反复使用它,而无需到处重复
if语句

比如说

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
每次调用此函数时,它都会检查条件-如果条件满足,则会添加
x
,如果条件不满足,则会返回
-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 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
按照以下步骤,您可能需要创建一个函数。一个函数将接受2个参数并在满足条件时返回总和,因此您可以反复使用它,而无需到处重复
if语句

比如说

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
每次调用此函数时,它都会检查条件-如果条件满足,则会添加
x
,如果条件不满足,则会返回
-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
过程或
函数中组合在一起。要执行它们,只需寻址(调用)名称。请参见创建和调用过程@另请参见这些代码行在命名的
Sub
过程或
函数中组合在一起。要执行它们,只需寻址(调用)名称。请参见创建和调用过程@另请参见这些代码行在命名的
Sub
过程或
函数中组合在一起。要执行它们,只需寻址(调用)名称。请参见创建和调用过程@另请参见这些代码行在命名的
Sub
过程或
函数中组合在一起。要执行它们,只需寻址(调用)名称。请参阅创建和调用过程@也请参阅这是一个精彩的答案,非常详细。然而,我不确定它是否对我所需要的内容太深入了。您的示例似乎需要条件。我只想在需要时调用一个“函数”。这可能在同一个脚本中多次执行,但在执行不同的操作之后…。如果这样做有意义的话。您可以将函数转换为过程。这很容易,但请记住,过程不会返回值。请看Alex在您的问题下的评论:)这是一个精彩的回答,非常详细。然而,我不确定它是否对我所需要的内容太深入了。您的示例似乎需要条件。我只想在需要时调用一个“函数”。这可能在同一个脚本中多次执行,但在执行不同的操作之后…。如果这样做有意义的话。您可以将函数转换为过程。这很容易,但请记住,过程不会返回值。请看Alex在您的问题下的评论:)这是一个精彩的回答,非常详细。然而,我不确定它是否对我所需要的内容太深入了。您的示例似乎需要条件。我只想在需要时调用一个“函数”。这可能在同一个脚本中多次执行,但在执行不同的操作之后…。如果这样做有意义的话。您可以将函数转换为过程。这很容易,但请记住,过程不会返回值。请看Alex在您的问题下的评论:)这是一个精彩的回答,非常详细。然而,我不确定它是否对我所需要的内容太深入了。您的示例似乎需要条件。我只想在需要时调用一个“函数”。这可能在同一个脚本中多次执行,但在执行不同的操作之后…。如果这样做有意义的话。您可以将函数转换为过程。这很容易,但请记住,过程不会返回值。参见Alex在您的问题下的评论:)您的评论具有误导性。请参阅使用带括号和不带括号的参数调用sub/函数。它们是将对象传递给函数(byRef和ByVal)的不同方式。您的注释具有误导性。请参阅使用带括号和不带括号的参数调用sub/函数。它们是将对象传递给函数(byRef和ByVal)的不同方式。您的注释具有误导性。请参阅使用带括号和不带括号的参数调用sub/函数。它们是将对象传递给函数(byRef和ByVal)的不同方式。您的注释具有误导性。请参阅使用带括号和不带括号的参数调用sub/函数。它们是将对象传递给函数(byRef和ByVal)的不同方式