VBA 핵 주의할 것

본 게시글은 전 블로그에서 2020년 8월 30일에 작성한 글입니다 https://blog.naver.com/progress0407/222068926986

VBA에서 핵 주의해야할 폭탄 개념이 있다..

일반적으로 어떤 언어든.. 내가 보아온 것들은..

함수에서 무엇인가 인자로 받아오면

주솟값이 아닌 값을 복사 해 오는 형태로 받아오는 것으로 알고 있다..

하지만 VBA에서는 그렇지 않다.

ref(주소) 형태로 불러오기 때문에 정말 정말 주의해야 한다.

image

image

내가 알기로는 JS에서도 그런 것으로 알고 있다..

항상 깊은 복사되는 시점과 얕은 복사되는 시점을 주의하고 코드를 구성하자.


해결책이다!

image

이렇게 바꾸어주자

호출부의 col과 number는 여전히 같은 주소를 바라보고 있지만

새로운 변수를 만들어 number를 깊은 복사하여 처리를 하면 된다.

Public Function 함수명(ref_Something As Variant) As 반환자료형
    Dim val: C_명시적형변환(ref_Something)

    ...val 이용한 처리...

    (Set)함수명 = 처리한결과

End Function

참고로 vba에서 Nothing은 null이라 보면 될 것 같다.

​> https://docs.microsoft.com/ko-kr/dotnet/visual-basic/language-reference/functions/type-conversion-functions




© 2020.12. by 따라쟁이

Powered by philz