繁体   English   中英

VBA Excel 2013:从另一个用户窗体分配数组值

[英]VBA Excel 2013: Assign Array Values from Another UserForm

我是VBA的新手。 我有一个正在编写的程序,可以让用户选择以另一种用户形式从二维数组中更改其输入。

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

当用户按下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保存的值。 但是,当我移至下一行时,这些值没有改变。

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

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

但是,如果有人有其他解决方案,我想知道。 我没有VBA的经验,所以我想听听其他解决方案。

暂无
暂无

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

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