Я относительно новичок в 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, пользователь выбирает номер строки, т.е., из выпадающего списка. Когда номер строки выбран, информация о массиве автоматически заполняется в текстовых полях из 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
Stepping через код, значение из MyArray должно быть надлежащим образом ссылаться, и я могу видеть значения первоначально сохраненных от UserForm1. Однако значения не меняются при переходе к следующей строке.
У кого-нибудь есть решение для моей проблемы? Заранее спасибо за вашу помощь!