gpt4 book ai didi

vba - 多次初始化用户窗体

转载 作者:行者123 更新时间:2023-12-04 21:02:30 29 4
gpt4 key购买 nike

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

  • 询问数据集的数量 (i)。
  • 从第 1 组中复制预设的 Excel 单元格并将它们粘贴到彼此下方,直到它们到达第 i 组。
  • 向用户询问要填入set 1 的数据,然后让UserForm 将其填入set 1 的单元格中。
  • 对每个数据集重复第 3 步,直到填写 i 集,然后卸载 UserForm。

  • 第 1 步和第 2 步没问题,但在这些步骤之后我得到的是以下代码。我想有一种方法为 i 的每个值初始化 UserForm,这可能应该包含在 For 循环中,然后再转到 i 的下一个值。每次都应该是相同的用户窗体,因为每组所需的数据由相同的东西组成,只是其他值。
    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 被填写?

    附言我必须使用的许多代码都来自我没有联系方式的其他人。

    最佳答案

    我找到了一种方法,方法是在一个用户窗体上创建一个循环,要求用户填写金额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

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

    关于vba - 多次初始化用户窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33474676/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com