将表单复制到新的多页后重命名表单上的文本框

Rename TextBoxes on Form after Copying it into a new multipage

我正在处理这个问题。我有一个在用户输入值后添加的用户表单(例如,如果他想添加 3 个成员,用户表单会在重命名后创建 3 个具有相同框的不同页面)。

我现在有这个:

按下“Lanzar”后,用户窗体将创建更多带有“Datos Educando 2”、“Datos Educando 3”...等的页面,取“Educandos a inscribir”上引入的值:“

代码如下:

Private Sub lanzar_numero_educandos_Click()
    
    Dim l As Double, r As Double
    Dim ctl As Control
    
    Me.MultiPage1.Pages(1).Visible = True
    
    If Me.MultiPage1.Pages.Count > 2 Then
    
        For a = Me.MultiPage1.Pages.Count - 1 To 2 Step -1
        
            Me.MultiPage1.Pages.Remove a
        
        Next a
    
    End If
    
    Me.MultiPage1.Pages(1).Visible = True
    
    If educandos_a_inscribir.Value <> 1 Then
    
        For a = 1 To educandos_a_inscribir.Value
        
            MultiPage1.Pages.Add
            MultiPage1.Pages(a).Controls.Copy
            MultiPage1.Pages(a + 1).Paste
            
            For Each ctl In MultiPage1.Pages(a).Controls
                If TypeOf ctl Is MSForms.Frame Then
                    l = ctl.Left
                    r = ctl.Top
                    Exit For
                End If
            Next
        
            For Each ctl In MultiPage1.Pages(a + 1).Controls
                If TypeOf ctl Is MSForms.Frame Then
                    ctl.Left = l
                    ctl.Top = r
                    Exit For
                End If
            Next
            
            Me.MultiPage1.Pages(a + 1).Caption = "Datos Educando " & a
        
        Next a
        
        Me.MultiPage1.Pages(1).Visible = False
        
    End If

End Sub

现在,我遇到的问题是用这段代码生成的页面在每个 TextBox 上都有随机名称,所以我无法找到用户介绍的信息。

例如,这是第一页(名字我已经知道的那一页):

在这里,文本框“Nombre Educando”称为“nombre_educando_1”,因此我可以在代码上轻松找到它:

复制第一页时创建的文本框具有随机名称(如“TextBox 34”、“TextBox 35”...等等),因此我无法控制它们的名称。

有没有一种方法可以生成编辑文本框名称的页面?例如,对于生成的第二个页面,上面示例中的 TextBox 应该是“nombre_educando_2”等等。

谢谢!

第一页上的每个控件都有一个名为 Tag 的属性。您可以使用独特且有意义的值来评估这些。当您将控件粘贴到新页面时,标签值将随之而来。然后,当您遍历任何页面上的控件时,使用 Select Ctl.tag 语句来确定如何处理控件的值。