将表单复制到新的多页后重命名表单上的文本框
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
语句来确定如何处理控件的值。
我正在处理这个问题。我有一个在用户输入值后添加的用户表单(例如,如果他想添加 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
语句来确定如何处理控件的值。