我是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最初保存的值。但是,當我走到下一行時,這些值不會改變。
有沒有人有我的問題的解決方案?預先感謝您的幫助!