2014-02-17 44 views
1

我很新的這所以道歉提前Excel的VBA - 使用現有的字符串中稱爲子

我中途在Excel用戶窗體,我試圖削減一些脂肪了我的代碼通過使用Call - 我有12個按鈕,都做同樣的事情,唯一的區別是每個按鈕子依賴於按鈕標題。我的問題是,我不知道如何使用已在Buttons Sub中聲明的字符串,然後在調用的Sub中使用它。我知道你可以做到這一點,但我的谷歌搜索技巧都失敗了我:(

請有人能告訴我如何做到這一點?希望所有有道理......

這裏是一個非常小的片斷我代碼,但你的JIST:

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 
+1

是你需要'調用Sort1(Name)'? –

回答

3

你指的是什麼傳遞一個參數到另一個子例程或函數。假設您想多次使用函數來獲取字符串的第一個字母。這方面的一個示例是:StrSample

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

上述功能可以在另一功能或提供你滿足其要求子程序內使用。通過在函數的參數字段中聲明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 

在您的例子,如果你想傳遞給NameSort1,你的嘗試是絕對正確的。

讓我們知道這是否有幫助。

+0

它的人喜歡你和@wumpz,這就是我喜歡這個網站的原因。我一直強調這個大聲笑了好幾個小時,而且你還有很多信息和明確的建議來保存這一天。全方位+ 1秒,完美運作。非常感謝。 –

+0

不用擔心,交配。祝你好運! :) – Manhattan

1

你的帽子給你的SORT1 procedu重新參數名稱。

call sort1(name) 

或 呼叫SORT1(CommandButton4.Caption)