VBA Excel 2013: назначение значений массива из другой пользовательской формы
Я относительно новичок в VBA. У меня есть программа, которую я пишу, где пользователю предоставляется возможность изменять свой вход из 2-мерного массива в другой пользовательской форме.
Первая пользовательская форма UserForm1 позволяет пользователю вводить информацию из текстовых полей и сохраняет ее в соответствующей строке массива, i, при нажатии кнопки «Сохранить».
Когда пользователь нажимает кнопку OK, пользователь спрашивает, хотите ли они добавить другой набор данных. Если они говорят «нет», их спрашивают, хотят ли они менять данные. Если они говорят «да», открывается другая пользовательская форма UserForm2.
- UserForm ComboBox
- Скрыть закрытую кнопку в пользовательской форме excel vba для моей панели выполнения
- Получить функцию () в качестве элемента управления
- Userform.Show на кнопке формы не распознает пользовательскую форму, получив ошибку 424
- Как установить FileDialog, чтобы не разрешать двойной щелчок
Код для 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. Однако значения не меняются при переходе к следующей строке.
У кого-нибудь есть решение для моей проблемы? Заранее спасибо за вашу помощь!
- Excel Userform - Обратный фокус на ComboBox после нажатия кнопки ввода
- Может ли формула ячейки Excel ссылаться на элемент управления UserForm?
- Как загрузить данные в Excel Userform Listbox из формы Access напрямую?
- XL VBA Как запретить игнорировать свойства UserTorm и .Left при первом .Show?
- Заполнение Combobox на второй пользовательской форме
- Excel VBA: динамический диапазон для ComboBox. Значения Rowsource не отображаются при вызове userForm из командной строки
- Изменения отслеживания Excel VBA
- Приложение Lauch внутри пользовательской формы
Я считаю, что нашел свое решение. Мне пришлось объявить массив в модуле, содержащем код, чтобы запустить программу как общедоступную переменную. После того как я это сделал и изменил код, значения были правильно записаны в массив.
Однако, если у кого-то есть другие решения, я хотел бы знать. Я не так разбираюсь в VBA, поэтому хочу услышать другие решения.