출처: https://stackoverflow.com/questions/31439866/multiple-variable-arguments-to-application-ontime
VBA로 프로그램을 짜다보면 특정 시간에 어떤 서브루틴을 불러야 할 경우가 있는데, 서브 루틴을 호출할 때 인수를 넘겨줄 방법을 몰라서 고민하다가 구글링을 해보니 출처에 해결 방법이 나와 있네요.
다음의 간단한 방법으로 인수를 넘겨줄 수 있습니다.
Private Sub Caller()
Dim i As Integer
i = 2
Application.OnTime EarliestTime:=Now + TimeValue("00:00:01"), _
Procedure:="'Test """ & i & "'", Schedule:=True
End Sub
Public Sub Test(j As Integer)
MsgBox ("Test: " & j)
End Sub
인수를 전달하는 방법은 '와 """를 사용하는 것입니다. 서브 루틴을 수행시켜보시면 Caller 모듈에서 1초 후에 Test 모듈을 호출하고 Test 모듈에서 j 값은 2로 제대로 찍히는 것을 보실 수 있습니다. 많은 인수를 전달하고자 할 때는 출처의 내용을 참고하시기 바랍니다.
여기서 주의하실 점은 Application.OnTime으로 호출하는 Caller 서브루틴은 UserForm안에 있어도 되고 Private 이어도 되지만, 호출 되는 Test 함수는 반드시 Standard Module에 있어야 하고 Public으로 선언되어야 합니다.(http://belitino.tistory.com/236)
'Office > VBA' 카테고리의 다른 글
VBA에서 #define, #ifdef와 유사한 문장 사용 방법 (0) | 2017.08.13 |
---|---|
VBA를 이용한 특정 시간 대기 방법 3가지 (0) | 2017.08.11 |
멀티 모니터에서 VBA 문자열 찾기 다이얼로그 위치 문제 해결 (0) | 2017.08.02 |
VBA Application.OnTime x Userform (0) | 2016.12.05 |
두 Excel 파일의 VBA 코드 비교 (0) | 2016.11.18 |