2017-12-12 21 views
0

어떻게 동적으로 생성 된 프레임을 다른 동적으로 생성 된 프레임에 추가합니까? 아이 프레임을 추가Excel VBA 다른 동적 프레임에 동적 프레임 추가

Set c = UserForm1.Controls.Add("Forms.Frame.1", "newcontrol1", True)

오류가 발생합니다 : 상위 프레임을 추가

작동

Set c = UserForm1.Controls("newcontrol1").Controls.Add("Forms.Frame.1", "newcontrol2", True)

자식 프레임이 부모 후에 직접 추가되지 않습니다, 그래서 필요 나중에 상위 프레임의 Controls을 참조하거나 액세스하는 방법입니다 (본질적으로 위의 표현식과 동일하게 작동합니다).

...UserForm1.Controls("newcontrol1").Controls..."newcontrol1"이 정상 프레임 인 경우 작동합니다. 동적으로 생성 된 컨트롤은 일반 컨트롤과 동일한 방식으로 참조 될 수 없다는 것을 알고 있습니다. 그리고 이벤트가 표준으로 생성되지는 않지만 동적으로 만들어진 프레임도 Controls 속성을 가져야합니다 ... 맞습니까?

나는 이전에 이런 일을 해낸 것처럼 느껴졌지 만 온라인에서 어떤 예도 찾을 수 없습니다.

도움을 주시면 감사하겠습니다.

감사합니다, 씨 J이 줄을 변경

답변

0

:

Set c = UserForm1.Controls("newcontrol1").Controls.Add("Forms.Frame.1", "newcontrol2", True) 

사람 :

이 나를 위해 일
Set c = UserForm1.Controls("newcontrol1").Add("Forms.Frame.1", "newcontrol2", True) 

. 문제는 당신이 .Controls를 두 번 사용했다는 것이 었습니다.

+0

"newcontrol1"'이 (가) 동적으로 생성 된 경우에도 여전히 작동하지 않습니다. 그것을 시도 할 때 동적 컨트롤 이었습니까? 나는 당신의 코드를''newcontrol1 "'로 보통의 컨트롤로 시도해 보았고, ** ** .Controls' **와 ** ** Control. 차이. –

+0

나는 그것을 시험해 보았고, 나를 위해 일했다. 나는 첫 번째 프레임을 버튼 클릭으로 만들었고 두 번째 프레임은 다른 버튼 클릭을 통해 만들었다.? – Xabier

+0

사과는 예를 들어 하나를 만들고 나서 다른 하나는 똑같은 것으로,'.Controls '에 대한 언급이 있든 없든 작동합니다. 내 문제는 좀 더 복잡하다고 생각합니다. 가장 최근에 생성 된 프레임에 대해서만 새 프레임을'.Add' 할 수 있습니다. 내 빌드 순서로 인해 이미 다른 상위 프레임을 추가 한 후에 프레임에 액세스하려고했습니다. 나는 지금부터 빌드 순서를 변경 했으므로 자식 프레임이 부모를 즉시 따라 가게되고 이것이 작동하는 것처럼 보인다. 모든 것을 순서대로 작성해야한다는 의미입니다. 그래도이 방법을 사용하는 것이 더 효율적인 방법이라고 확신합니다. –