프로시저에 매개변수를 전달하는 방법.
ByVal - 값에 의한 전달
ByRef - 참조에 의한 전달(디폴트)
프로시저 작성에 별다른 표기를 하지 않으면 참조에 의한 전달(ByRef)을 기본적으로 적용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Sub mainPro() Dim i As Integer Dim j As Integer i = 10 '메인프로세스에서 변수값 10으로 저장 j = 10 Call subPro(i, j) '서브프로세스 호출 MsgBox "i : " & i & " , " & "j : " & j End Sub ----------------------------------------------------- Sub subPro(ByVal i As Integer, ByRef j As Integer) ' i와 j를 넘겨받아서 실행 ' i는 값으로 넘겨받아서 999로 저장 ' j는 참조로 넘겨받아서 999로 변경 i = 999 j = 999 End Sub | cs |
위 그림에서 보면 값으로 전달한 i는 메인 프로세스로 돌아와도 서브 프로세스에서의 값 변경이 적용되지 않는다.
결론적으로 메인 프로시저와 서브 프로시저간에 변수를 공유하면서 사용할 때는 ByRef를 사용하고, 특정 프로시저에서만 사용할 경우는 ByVal을 사용한다고 생각하면 될듯.
'Excel > VBA 공부' 카테고리의 다른 글
얼렁뚱땅 엑셀 VBA] Range 개체 (0) | 2017.05.26 |
---|---|
얼렁뚱땅 엑셀 VBA] InputBox (6) | 2017.05.25 |
얼렁뚱땅 엑셀 VBA] Function 프로시저 (0) | 2017.05.23 |
얼렁뚱땅 엑셀 VBA] 순환문(For ~ Next / For Each ~ Next) (0) | 2017.05.21 |
얼렁뚱땅 엑셀 VBA] 조건문(Select Case문) (0) | 2017.05.20 |
얼렁뚱땅 엑셀 VBA] 조건문(If~Then~Else문 / IIf문) (0) | 2017.05.19 |
얼렁뚱땅 엑셀 VBA] 배열변수, 동적 배열변수 (1) | 2017.05.18 |
얼렁뚱땅 엑셀 VBA] 변수, 상수, 개체변수 (0) | 2017.05.17 |
얼렁뚱땅 엑셀 VBA] 프로시저 (Public / Private 프로시저) (0) | 2017.05.16 |
얼렁뚱땅 엑셀 VBA] With ~ End With 구문 (0) | 2017.05.15 |
댓글