
[英]VBA Excel 2013 returning specific values of an array from a UD Function
[英]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.