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