Вопрос по excel, excel-vba, vba – Динамическое добавление меток в форму пользователя = пустая форма пользователя

13

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

<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   ответа
-4

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

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

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

  1. You need to show your UserForm as vbModeless - else the code stops on UserForm2.Show
  2. You are creating an object called Label then using With on theLabel
  3. 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
    
@BiGXERO попробуйте запустить код из стандартного модуля.
О, МОЙ БОГ! Конечно! Огромное спасибо. Вот почему я люблю этот сайт. Ты хороший человек! BiGXERO
+1 для хорошего человека! :) Красиво объяснил.
Спасибо большое за отзывы. Я копирую и вставляю ваш код прямо в модуль UserForm2, нажимаю клавишу f5, форма загружается, но все еще полностью пуста. Я даже открыл новую рабочую книгу, повторил описанные выше шаги, сохранил новую рабочую книгу и нажал кнопку «Выполнить», оставив только пустую форму пользователя. Возможно, есть параметр, который я должен изменить, или что-то внешнее по отношению к коду, поскольку ваш код выглядит так, как будто он делает именно то, что я хотел, но это не так: S Еще раз спасибо! BiGXERO

Похожие вопросы