多次初始化用户窗体

Initialize UserForm multiple times

对于我正在进行的项目,我正在编写一个用户窗体,通过向将使用 sheet 的人询问某些数据来填写 Excel 文件。多组数据需要相同类型的数据。因此,我希望一个用户窗体多次弹出,以在 Excel 文件的不同位置填写数据。关于我希望程序执行的操作的简短分步指南如下:

  1. 求数据集数量(i).
  2. 复制第 1 组中的预设 Excel 个单元格并将它们粘贴在彼此下方,直到它们达到 i 组。
  3. 要求用户在第 1 组中填写要填写的数据,然后让用户窗体将其填入第 1 组中的单元格中。
  4. 对每个数据集重复步骤 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 编码,但它确实有效。