初始化UserForm多次

对于我正在处理的项目,我正在编写UserForm,通过向将使用该工作表的人员询问某些数据来填写Excel文件。 有多个数据需要的数据需要相同的数据types。 因此,我想要一个用户窗体多次popup来填写Excel文件中不同位置的数据。 关于我想要程序做什么的一个简短的分步指南是以下内容:

  1. 询问数据集( i )的数量。
  2. 复制集合1中的预设Excel单元格,并将它们粘贴到彼此之下,直到它们到达i集合。
  3. 询问用户要填写的数据集1中,然后让用户窗体填充它在集合1中的单元格。
  4. 对每个数据集重复步骤3,直到set i被填充,然后卸载UserForm。

步骤1和2是没有问题的,但是我在这些步骤之后是下面的代码。 我想有一种方法来初始化我的每个值的UserForm,它可能应该包括在For循环,在它进入下一个值之前。 它应该每次都是相同的UserForm,因为每个集合所需的数据都由相同的东西组成,只是其他值。

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的每个集合多次加载UserForm? 如果是这样,你能解释我是怎么做到的?

也许一个解决scheme是加载一个新的用户窗体,每次在用户窗体的末尾,直到设置已经填写?

PS我必须使用的很多代码是从别人的联系方式我没有。

我已经find了一种方法来做到这一点,在用户被要求填写金额i在一个用户窗体上创build一个循环。 然后在这个循环中运行下一个用户窗体,其中要求设置的所有数据。 填充并单击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 

这可能不是屡获殊荣的编码,但它有诀窍。