Динамическое добавление меток в форму пользователя = пустая форма пользователя

Я пытаюсь динамически добавлять кнопки в пользовательскую форму, но пользовательская форма просто появляется пустым. Я максимально упростил суть кода для проверки ошибок (не то, чтобы это помогло мне)

<code>Sub addLabel()
UserForm2.Show    
Dim theLabel As Label
Dim labelCounter As Integer

For labelCounter = 1 To 3
    Set Label = UserForm2.Controls.Add("Forms.Label.1", "Test" & labelCounter, True)
    With theLabel
        .Caption = "Test" & labelCounter
        .Left = 10
        .Width = 50
        .Top = 10
    End With
End Sub
</code>

Есть ли способ проверить, были ли кнопки добавлены, но невидимы ли? Или почему они не добавляются. Любая помощь с благодарностью.

Ответы на вопрос(2)

Решение Вопроса

Несколько вещей:

You need to show your UserForm as vbModeless - else the code stops on UserForm2.Show You are creating an object called Label then using With on theLabel

You will then need to increment the position of your three labels to avoid overlap (which I have done using Top).

Sub addLabel()
UserForm2.Show vbModeless
Dim theLabel As Object
Dim labelCounter As Long

For labelCounter = 1 To 3
    Set theLabel = UserForm2.Controls.Add("Forms.Label.1", "Test" & labelCounter, True)
    With theLabel
        .Caption = "Test" & labelCounter
        .Left = 10
        .Width = 50
        .Top = 10 * labelCounter
    End With
Next
End Sub
 11 мая 2012 г., 06:25
@BiGXERO попробуйте запустить код из стандартного модуля.
 BiGXERO11 мая 2012 г., 06:34
О, МОЙ БОГ! Конечно! Огромное спасибо. Вот почему я люблю этот сайт. Ты хороший человек!
 11 мая 2012 г., 09:13
+1 для хорошего человека! :) Красиво объяснил.
 BiGXERO11 мая 2012 г., 05:57
Спасибо большое за отзывы. Я копирую и вставляю ваш код прямо в модуль UserForm2, нажимаю клавишу f5, форма загружается, но все еще полностью пуста. Я даже открыл новую рабочую книгу, повторил описанные выше шаги, сохранил новую рабочую книгу и нажал кнопку «Выполнить», оставив только пустую форму пользователя. Возможно, есть параметр, который я должен изменить, или что-то внешнее по отношению к коду, поскольку ваш код выглядит так, как будто он делает именно то, что я хотел, но это не так: S Еще раз спасибо!

попробуйте ниже код

Set theLabel = UserForm2.Designer.Controls.Add("Forms.Label.1", "Test1", True)
 03 янв. 2018 г., 15:09
Использование Designer в этом случае лениво и опасно. Это показывает отсутствие понимания объекта форм и как взаимодействовать с ними
 19 апр. 2016 г., 22:20
люди, которые понижают голос, по крайней мере, говорят, почему ...

Ваш ответ на вопрос