2017-04-17 7 views
1

실례가 부족함 : VBA에서 전달 된 인수의 값을 변경하는 서브 루틴을 작성했습니다. 이 작업은 전역 필드에서 성공적으로 수행되지만 예를 들어 양식의 텍스트 상자를 전달할 때가 아닙니다. 나는 텍스트 박스가 바뀌길 기대하지만 그렇게하지는 않을 것이다. 예를 들어 (의사 코드) :VBA - ByRef를 사용하여 양식 필드를 서브 루틴으로 전달

Public Subroutine ChangeVal (ByRef abcde) 
abcde = abcde * 2 
End Sub 

ChangeVal "txtabcde" 

이 작동하지 않습니다.

답변

0

값을 전달했지만 Excel이이 값이 특정 개체에 속한다는 것을 알 수 없습니다.

Public Sub ChangeVal2(ByRef obj) 
    obj.Value = obj.Value * 2 
End Sub 

그리고 다음과 같이 호출 :

ChangeVal2 ActiveSheet.TextBox1 
당신이 이런 식으로 뭔가를 사용하는 거라고 (당신의 텍스트 상자가 'TextBox1에'의 이름을 가진 액티브 텍스트 상자라고 가정) 수행 할 작업을 수행하려면