【问题标题】:VBA Excel 2013: Assign Array Values from Another UserFormVBA Excel 2013:从另一个用户窗体分配数组值
【发布时间】:2016-11-30 14:16:16
【问题描述】:

我对 VBA 比较陌生。我正在编写一个程序,用户可以选择从另一个用户表单中的二维数组更改他们的输入。

第一个用户表单 UserForm1 允许用户在按下保存命令按钮时从文本字段输入信息并将其保存到相应的数组行 i。

当用户按下 OK 命令按钮时,系统会询问用户是否要添加另一组数据。如果他们拒绝,系统会询问他们是否要更改数据。如果他们说是,则打开另一个用户表单 UserForm2。

UserForm1 的代码类似于下面的代码:

    Public MyArray as Variant, i as Integer

    Sub Userform_Initialize()
        ReDim MyArray(100,4)
    End Sub

    Sub SaveButton_click()
        MyArray(i, 1) = TextField1.Value
        MyArray(i, 2) = TextField2.Value
        MyArray(i, 3) = TextField3.Value
        MyArray(i, 4) = TextField4.Value
    End Sub

    Sub OKButton_click()
        If msgbox("Do you want to add more data?", vbYesNo) = vbNo Then
            If msgbox("Do you have corrections to be made?",vbYesNo) = vbYes Then
                Load UserForm2
                UserForm2.Show
            Else:  Exit Sub
            End If
        Else:  i = i + 1
            Exit Sub
        End If
    End Sub

在 UserForm2 中,用户从组合框中选择行号 i。选择行号时,数组信息会自动填充到来自 UserForm1 的文本字段中。

当用户按下保存命令按钮时,它应该从文本字段传递信息并将其写入相应的行。

UserForm2 的代码类似于下面的代码:

    Public j as integer

    Sub Userform_Initialize()
        For j = 1 to UserForm1.i
            ComboBox1.AddItem (j)
        Next
    End Sub

    Sub SaveButton_click()
        UserForm1.MyArray(ComboBox1.Value, 1) = TextField1.Value
        UserForm1.MyArray(ComboBox1.Value, 2) = TextField2.Value
        UserForm1.MyArray(ComboBox1.Value, 3) = TextField3.Value
        UserForm1.MyArray(ComboBox1.Value, 4) = TextField4.Value
    End Sub

单步执行代码,MyArray 中的值应该被正确引用,并且我可以看到最初从 UserForm1 保存的值。但是,当我进入下一行时,这些值并没有改变。

有人能解决我的问题吗?提前感谢您的帮助!

【问题讨论】:

    标签: arrays excel vba userform


    【解决方案1】:

    我相信我找到了解决方案。我必须在包含代码的模块中声明数组以作为公共变量启动程序。在我这样做并修改代码之后,值被正确写入数组。

    不过,如果有人有其他解决方案,我想知道。我对 VBA 没有那么丰富的经验,所以我想听听其他解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      相关资源
      最近更新 更多