我是VBA的新手。我正在编写一个程序,用户可以在其中以另一种用户形式从2维数组中更改输入。VBA Excel 2013:从另一个用户窗体分配数组值
第一个用户表单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最初保存的值。但是,当我走到下一行时,这些值不会改变。
有没有人有我的问题的解决方案?预先感谢您的帮助!