2017-12-15 5 views
2

문자열을 사용하여이 서브 루틴을 호출하려고합니다. 온라인으로 읽은 것처럼 Application.Run을 시도했지만 작동하지 않는 것 같습니다. 가변 요소는 루프를 거쳐 다른 상태 코드를 나타냅니다. 그래서, "GA_Config" "AZ_Config을"CA_Config "라는 잠수정이"등문자열 값에서 서브 루틴 호출 VBA

Dim strSubToCall As String 
strSubToCall = element & "_Config()" 
Application.Run strSubToCall 

주 잠수정은 따라서 매우 다른 다른 서브 루틴을해야합니다. 다른 잠수함과 다른 잠수함을 호출하는 기본 잠수함은 모두 공개입니다.

Public Sub CA_Config() 

Dim rngLastHeader As Range 
Dim intLastRow As Integer 
Dim i As Integer 
intLastRow = Sheet1.currWS.UsedRange.Rows.Count 
Set rngLastHeader = Sheet1.currWS.Range("A1").End(xlToRight) 

rngLastHeader.Offset(, 1).Value = "Use Tax Reversal Needed" 

Sheet1.currWS.Range("X:X").EntireColumn.Copy 
Sheet1.currWS.Range("Y:Y").PasteSpecial xlPasteFormats 
Sheet1.currWS.Range("Y:Y").Columns.AutoFit 

End Sub 
+1

제거 괄호'()' – JohnyL

+0

내가 처음 시도하고 작동하지 않았다 무엇 그 중 하나 :( – SanomaJean

+1

아마의'Sub'는 다른 모듈과'Private'? – JohnyL

답변

4

제거 괄호 아래 CA 하위의 예와는 모듈 이름으로 하위 이름을 앞에 추가. 예 : Application.Run "Module1.MySub".

+0

@ Mat'sMug 제발, 질문 아래의 의견을 따르십시오 - 괄호 내가 언급 한 첫 번째였다. – JohnyL

+0

흥미 롭습니다. 나는'application.run '으로 현재 프로젝트에서 가지고있는 무조건적인 공개 프로 시저를 테스트했고,'다시 호출하면 * 여전히 * 호출되었습니다. 그러나 어떤 이유로'application.run "sub1"'을 좋아하지 않습니다. 내가 말했듯이, 부모 모듈로 멤버 자격을 얻는 것은 항상 좋은 생각입니다. 나는 당신에게 당신의 대답을 바꿀 것을 요구하지 않았다, 나는 당신에게 당신이했던 괄호에 관한 부분을 포함하도록 편집하도록 요청했다. 그것은 내 투표의 반전을 촉구했다. 나쁜 하루라도 보내고 있니? 힘내 친구 야. –

+0

'Sub1'을'DoSomething'으로, 그리고'Sub2'를'AnotherThing'으로 이름을 바꾸고 VBE의 어리 석음에 굴복하십시오. –