반응형
문자열로 서브 호출
값에 따라 다른 서브를 호출하고 싶습니다.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
반응형
'programing' 카테고리의 다른 글
HTML로 문자열 렌더링 및 공백 및 줄 바꿈 보존 (0) | 2023.10.12 |
---|---|
DataGrip JetBrains에서 새 데이터베이스 만들기 (0) | 2023.10.12 |
MySQL 확장 디스플레이 (0) | 2023.10.12 |
Angular 지시문에서 돔 요소에 액세스하는 방법 (0) | 2023.10.12 |
AngularJS UncaughtReferenceError: 컨트롤러가 모듈에서 정의되지 않았습니다. (0) | 2023.10.12 |