programing

문자열로 서브 호출

telecom 2023. 10. 12. 21:48
반응형

문자열로 서브 호출

값에 따라 다른 서브를 호출하고 싶습니다.i.

예를 들어, 만약i = 1불러sale_call1만일i = 2불러sale_call2.

Private Sub test_Click()
    Dim i As String
    Dim pro As String

    i = Me.tb1.Value
    pro = "sale_call" + i

    If i = "1" Then
        Call pro
    Else
        Call pro
    End If
End Sub

Sub sale_call1()
    MsgBox "Hello"
End Sub

Sub sale_call2()
    MsgBox "goodbye"
End Sub

이거 먹어봐요.

교체하다Call pro와 함께Application.Run pro

Private Sub test_Click()
    Dim i As String
    Dim pro As String

    i = 1
    pro = "sale_call" + i

    '~~> This will run sale_call1
    Application.Run pro

    i = 2
    pro = "sale_call" + i

    '~~> This will run sale_call2
    Application.Run pro
End Sub

Sub sale_call1()
    MsgBox "Hello"
End Sub

Sub sale_call2()
    MsgBox "goodbye"
End Sub

따르다

코드가 모듈에 있는 것이 아니라 User form 또는 Sheet Code 영역에 있는 경우Application.Run때까지 일을 하지 않을 것입니다.sale_call1아니면sale_call2모듈에 배치되지 않습니다.모듈로 이동하지 않으려면 다음을 사용해야 합니다.CallByName. 이 기능에 대한 엑셀의 내장 도움말을 확인해보세요.여기 코드가 인(in)이라고 가정하는 예가 있습니다.Userform1

Private Sub CommandButton1_Click()
    Dim i As String
    Dim pro As String

    i = 1
    pro = "sale_call" + i

    '~~> This will run sale_call1
    CallByName UserForm1, pro, VbMethod

    i = 2
    pro = "sale_call" + i

    '~~> This will run sale_call2
    CallByName UserForm1, pro, VbMethod
End Sub

Sub sale_call1()
    MsgBox "Hello"
End Sub

Sub sale_call2()
    MsgBox "goodbye"
End Sub

매크로가 호스팅되는 워크북 이름의 접두사를 추가하기만 하면 됩니다.셀에서 공식을 수행할 때와 같습니다.

Application.Run "WorkbookNameAsString.app_ext!MacroName"

VBA는 연결할 때 '&'을 사용합니다.

올바르지 않음:

pro = "sale_call" + i

수정됨:

pro = "sale_call" & i

도움이 되었으면 좋겠습니다.

언급URL : https://stackoverflow.com/questions/15969796/call-a-sub-with-a-string

반응형