Excel VBA - 在被调用的sub中使用现有字符串

时间:2014-02-17 22:18:56

标签: string excel-vba call vba excel

我对此很新,所以提前道歉

我正在使用Excel中的用户表单,我试图通过使用Call减少我的代码 - 我有12个按钮都做同样的事情,唯一的区别是每个按钮sub取决于按钮标题。我的问题是我无法想出一种方法来使用我已经在Buttons Sub中声明的String,然后在被调用的Sub中使用它。我知道你可以做到,但我的谷歌搜索技能让我失望:(

有人可以告诉我怎么做吗?希望一切都有意义......

这是我的代码的一小部分,但你得到了这个小说:

    Public Sub CommandButton4_Click()
    Dim Name As String

    Name = CommandButton4.Caption

    Call Sort1

    End Sub`

另一个(为了试验和错误,也尝试了这个功能)

    Public Sub Sort1(Name As String)

    Label11.Caption = Name
    Sheets(Name).Select

    End Sub

2 个答案:

答案 0 :(得分:3)

您所指的是 将参数 传递给另一个子例程或函数。假设您想要多次使用函数来获取字符串的第一个字母。这样的一个例子是:

Function LeftOne(StrSample As String) As String
    LeftOne = Left(StrSample, 1)
End Function

如果符合要求,上述函数可以在另一个函数或子例程中使用:StrSample。通过在函数的arguments字段中声明StrSample As String,您基本上要求对此进行的任何调用都需要将字符串传递给它。其他任何事都会引发错误。

整行LeftOne(StrSample As String) As String可以理解为:“我是函数LeftOne。传递给我一个字符串,在用它做一些事后我会给你一个字符串。”请注意,名称StrSample是任意名称。

无论如何,调用上述内容非常简单:

Sub MsgInABox()
    Dim StrToFeed As String
    StrToFeed = "BK201"
    MsgBox LeftOne(StrToFeed) 'Returns B.
End Sub

在您的示例中,如果您想将Name传递给Sort1,那么您的尝试绝对正确。

如果有帮助,请告诉我们。

答案 1 :(得分:1)

您可以为sort1过程提供参数名称。

call sort1(name)

或     调用sort1(CommandButton4.Caption)