팀은 직접 물었지만, 명심해야 할 다른 일이 무엇인지 포함하는 사용자 정의 클래스와 같은 모든 참조 형 변수도 값을 전달하면 해당 인스턴스에 변경 사항을 적용 할 수 있습니다. 그러나 전체 개체를 변경할 수는 없습니다. 어느 그것이 당신에게 보였다 이유가 될 수 MSDN에서 참조
Public Sub (Something As WhateverClass)
Something = New WhateverClass 'will result in no changes when outside this method
Something.Property1 = "Test" 'will result in an updated property when outside this method
End Sub
에 의해 디폴트 수 :
참조 형식의 값은 다른 메모리에있는 데이터에 대한 포인터입니다. 즉, 참조 형식을 값으로 전달하면 프로 시저 코드는 기본 요소 자체에 액세스 할 수 없더라도 기본 요소의 데이터 인 에 대한 포인터를 갖습니다. 의 경우 요소가 배열 변수 인 경우 프로 시저 코드는 에 변수 자체에 대한 액세스 권한이 없지만 배열 멤버에 액세스 할 수 있습니다. 기본값은 ByRef
이다 VBA에 루틴을 전송할 때
출처
2012-02-09 13:26:14
Jay
기본값은 ByVal이지만, [값 및 참조로 전달] (http://msdn.microsoft.com/en-us/library/ddck1z30.aspx)의 의미를 이해해야합니다. –
거의 항상 ByVal을 전달하기를 원합니다. 사실 이것은 기본값입니다. 코드가 "ByVal"로 뒤죽박죽이 될 이유는 없습니다. 그것은 단지 "소음"입니다. 절대적으로 Pass-by-Reference 의미론을 가져야 할 때 명시 적으로 'ByRef' 만 명시 적으로 지정하십시오. –