繁体   English   中英

多次初始化用户窗体

[英]Initialize UserForm multiple times

对于一个我正在从事的项目,我正在编写一个UserForm,以通过向使用表格的人询问某些数据来填写Excel文件。 多组需要相同数据的数据。 因此,我希望多次弹出一个UserForm来填充Excel文件中不同位置的数据。 以下是我要让程序执行的简短分步指南:

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

步骤1和2没问题,但是经过这些步骤之后,我得到的是以下代码。 我想有一种方法可以为i的每个值初始化UserForm,在转到下一个i值之前,可能应该将它包含在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? 如果是这样,您能解释一下我该怎么做吗?

也许一种解决方案是每次在UserForm的末尾加载一个新的UserForm,直到填写完

PS我需要使用的许多代码来自我没有联系方式的其他人。

我已经找到了一种方法,可以在一个UserForm上创建一个循环,要求用户填写i 然后在此循环中,运行下一个UserForm,在其中询问集合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

这可能不是屡获殊荣的编码,但是可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM