【发布时间】: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 保存的值。但是,当我进入下一行时,这些值并没有改变。
有人能解决我的问题吗?提前感谢您的帮助!
【问题讨论】: