多次初始化用户窗体
Initialize UserForm multiple times
对于我正在进行的项目,我正在编写一个用户窗体,通过向将使用 sheet 的人询问某些数据来填写 Excel 文件。多组数据需要相同类型的数据。因此,我希望一个用户窗体多次弹出,以在 Excel 文件的不同位置填写数据。关于我希望程序执行的操作的简短分步指南如下:
- 求数据集数量(i).
- 复制第 1 组中的预设 Excel 个单元格并将它们粘贴在彼此下方,直到它们达到 i 组。
- 要求用户在第 1 组中填写要填写的数据,然后让用户窗体将其填入第 1 组中的单元格中。
- 对每个数据集重复步骤 3,直到集 i 被填充,然后卸载 UserForm。
第 1 步和第 2 步没有问题,但我在这些步骤之后得到的是以下代码。我想有一种方法可以为 i 的每个值初始化用户窗体,这可能应该包含在 For 循环中,然后再转到 [=21= 的下一个值]我。每次都应该是相同的用户窗体,因为每组所需的数据由相同的东西组成,只是其他值。
Private Sub UserForm_Initialize()
For i = 1 To Sheet4.Cells(5, 4)
If Sheet4.Cells(5, 4) = 1 Or i = 1 Then
LastCrossing = "Crossing"
Else
LastCrossing = "Crossing " & i
End If
Set CrossingLoc = Sheet4.Cells.Find(What:=LastCrossing, After:=Sheet4.Cells(1, 1), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
CaptString = i
UserForm10.Caption = "Crossing " & CaptString
CrossingLoc = CrossingLoc.Row + 3
If Sheet4.Cells(CrossingLoc, 4) = "" Then
i = Sheet4.Cells(5, 4)
End If
Next i
End Sub
是否可以为从 1 到 i 的每个集合多次加载用户窗体?如果是这样,你能解释一下我是怎么做到的吗?
也许一个解决方案是每次在用户窗体结束时加载一个新的用户窗体,直到设置 i 已填写?
P.S。我必须使用的很多代码都来自其他人,我没有他们的联系方式。
我找到了一种方法,即在一个用户窗体上创建一个循环,要求用户填写金额 i
。然后在此循环中,下一个用户窗体是 运行,其中询问集合 i
的所有数据。填写并单击 CommandButton
然后将您带回到此循环中的下一个值 i
。
这样,问题中编码的标题也会发生变化。
If i = 1 Then
Selection.Replace What:="Crossing*", Replacement:="Crossing " & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Application.CutCopyMode = False
Range("A1").Select
Range("E4").Value = 1
UserForm13.Show
End If
ElseIf i > 1 Then
' Fill in 01
Range("E4").Value = 1
UserForm13.Show
End If
' Fill in Pipes 02 - i
For i = 2 To TextBox1.Value
CrossingLoc.Select
Selection.Copy
ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Offset(3, 0).PasteSpecial
Selection.Replace What:="Crossing*", Replacement:="Crossing " & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Range("E4").Value = i
UserForm13.Show 'The UserForm that has to be repeated.
End If
Next i
这可能不是 award-winning 编码,但它确实有效。
对于我正在进行的项目,我正在编写一个用户窗体,通过向将使用 sheet 的人询问某些数据来填写 Excel 文件。多组数据需要相同类型的数据。因此,我希望一个用户窗体多次弹出,以在 Excel 文件的不同位置填写数据。关于我希望程序执行的操作的简短分步指南如下:
- 求数据集数量(i).
- 复制第 1 组中的预设 Excel 个单元格并将它们粘贴在彼此下方,直到它们达到 i 组。
- 要求用户在第 1 组中填写要填写的数据,然后让用户窗体将其填入第 1 组中的单元格中。
- 对每个数据集重复步骤 3,直到集 i 被填充,然后卸载 UserForm。
第 1 步和第 2 步没有问题,但我在这些步骤之后得到的是以下代码。我想有一种方法可以为 i 的每个值初始化用户窗体,这可能应该包含在 For 循环中,然后再转到 [=21= 的下一个值]我。每次都应该是相同的用户窗体,因为每组所需的数据由相同的东西组成,只是其他值。
Private Sub UserForm_Initialize()
For i = 1 To Sheet4.Cells(5, 4)
If Sheet4.Cells(5, 4) = 1 Or i = 1 Then
LastCrossing = "Crossing"
Else
LastCrossing = "Crossing " & i
End If
Set CrossingLoc = Sheet4.Cells.Find(What:=LastCrossing, After:=Sheet4.Cells(1, 1), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
CaptString = i
UserForm10.Caption = "Crossing " & CaptString
CrossingLoc = CrossingLoc.Row + 3
If Sheet4.Cells(CrossingLoc, 4) = "" Then
i = Sheet4.Cells(5, 4)
End If
Next i
End Sub
是否可以为从 1 到 i 的每个集合多次加载用户窗体?如果是这样,你能解释一下我是怎么做到的吗?
也许一个解决方案是每次在用户窗体结束时加载一个新的用户窗体,直到设置 i 已填写?
P.S。我必须使用的很多代码都来自其他人,我没有他们的联系方式。
我找到了一种方法,即在一个用户窗体上创建一个循环,要求用户填写金额 i
。然后在此循环中,下一个用户窗体是 运行,其中询问集合 i
的所有数据。填写并单击 CommandButton
然后将您带回到此循环中的下一个值 i
。
这样,问题中编码的标题也会发生变化。
If i = 1 Then
Selection.Replace What:="Crossing*", Replacement:="Crossing " & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Application.CutCopyMode = False
Range("A1").Select
Range("E4").Value = 1
UserForm13.Show
End If
ElseIf i > 1 Then
' Fill in 01
Range("E4").Value = 1
UserForm13.Show
End If
' Fill in Pipes 02 - i
For i = 2 To TextBox1.Value
CrossingLoc.Select
Selection.Copy
ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Offset(3, 0).PasteSpecial
Selection.Replace What:="Crossing*", Replacement:="Crossing " & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Range("E4").Value = i
UserForm13.Show 'The UserForm that has to be repeated.
End If
Next i
这可能不是 award-winning 编码,但它确实有效。