2014-10-06 3 views
0

하위에서 UserForm을 호출하는 데 큰 문제가 있습니다. VBA : 하위 양식 호출

내 코드의 일부이다 :이

Private Sub UserForm_Initialize() 

Call TestForArray("Form1", "ComboBox1") 

End Sub 

같은

Sub TestForArray(ObjectName,FormName As String)  

Forms(FormName).Controls(ObjectName).List = NewArr 

End sub 

나는 개인 서브에서이 하위를 호출, 내가 오류를 얻을; "하위 또는 기능이 정의되지 않았습니다."라는 단어를 강조 표시합니다. 양식

내가 뭘 잘못하고 있니?

+0

오류가 발생한다. UserForms 콜렉션 만 존재하지만, userforms의 이름에는 인덱스 번호 만 사용할 수 없습니다. 목표는 무엇입니까? 한 사용자 정의 폼을 초기화하는 동안 다른 사용자 정의 폼에 ComboBox 목록이 있습니까? 왜? 왜 다른 UserForm의 _Initialize 이벤트를 사용하여 초기화하지 않습니까? –

+0

@AxelRichter 귀하의 회신에 감사드립니다. 나는 ComboBoxes가있는 곳에 다른 UserForms가 많이 있기 때문에. 콤보 박스를 채우기 위해이 함수를 호출 할 기회가 있다면 좋을 것입니다. –

답변

1

다른 UserForms에서 호출하여 UserForm의 컨트롤을 초기화 할 수있는 하나의 Sub를 갖는 것이 목표 인 경우 UserForm 자체를 매개 변수로 지정할 수 있습니다.

예 :

Sub TestForArray(oForm As UserForm, sObjectName As String) 
    aNewArr = [{1,2,3,4,5,6}] 
    oForm.Controls(sObjectName).List = aNewArr 
End Sub 

과 없음 Forms 컬렉션 없으므로

Private Sub UserForm_Initialize() 
Call TestForArray(Me, "ComboBox1") 
End Sub 

인사

악셀

+0

이것은 완벽하게 작동했습니다! –