Создание дополнительных страниц в пользовательской форме MultiPage с помощью CommandButton, созданной во время выполнения - PullRequest
1 голос
/ 09 апреля 2020

Вот моя проблема:

У меня есть пользовательская форма с MultiPage. На первой странице у меня есть TextBox и CommandButton. Идея здесь заключается в том, что когда я ввожу число в свой TextBox и нажимаю CommandButton, я создаю номер нового TextBox, равный числу, введенному в первом TextBox. Кроме того, он также создает новый CommandButton.

Теперь я хочу назначить макрос этому новому CommandButton, созданному динамически.

Я использую этот post для помогите мне решить мою проблему, и она работает, если я хочу напечатать сообщение, как показано в сообщении.

В моем случае, что я хочу сделать, нажав новую CommandButton, это создать новые страницы в моей MultiPage используя имя, введенное в TextBoxes, созданный первым CommandButton.

У меня есть этот класс (он называется Classe3):

Option Explicit
Public WithEvents CmdEvents As MSForms.CommandButton

Private Sub CmdEvents_Click()

Dim multi_page As Object

Dim nb_blocks As Integer  'Represents the number entered in the first text box on the user form
Dim i As Integer          

nb_blocks = Me.MultiPage1.Pages(0).UF4_TB_nbC.Value 'UF4_TB_nbC is the name of th first TextBox

For i = 1 To nb_blocks

    Set multi_page = Me.MultiPage1.Pages.Add("page" + CStr(i), i)

    With multi_page

        .Caption = Me.MultiPage1.Pages(0).Controls("UF4_TB_nameBlock" + CStr(i)).Value 'Get the name from each TextBox created dynamically

    End With

Next i

End Sub

В моей пользовательской форме у меня есть эта часть кода в моем Sub CommandButton1_Click () :

Set command_button = Me.MultiPage1.Pages(0).Add("Forms.CommandButton.1")

With command_button

    .Height = 18
    .Top = 96 + 18 * nb_blocks + 18
    .Width = 60
    .Left = 44
    .Caption = "Ok"
    .name = "UF4_CB2_Validation"
    .Tag = 1

End With

ReDim Preserve cmdArray(1 To 1)
Set cmdArray(1).CmdEvents = command_button 'Assign the macro the the new CommandButton

Set command_button = Nothing 

Поэтому, когда я запускаю свою пользовательскую форму и нажимаю вторую CommandButton, чтобы построить свои страницы, у меня появляется сообщение об ошибке из моего класса. Более конкретно из этой строки:

nb_blocks = Me.MultiPage1.Pages(0).UF4_TB_nbC.Value

В сообщении об ошибке говорится, что MultiPage1 не может быть найден.

Возможно, проблема связана с аргументом Me , но я ' Я не уверен. Если у вас есть идея, будет приятно обсудить ее, чтобы решить мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...