VBA Excel 2013: назначение значений массива из другой пользовательской формы

Я относительно новичок в VBA. У меня есть программа, которую я пишу, где пользователю предоставляется возможность изменять свой вход из 2-мерного массива в другой пользовательской форме.

Первая пользовательская форма 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. Однако значения не меняются при переходе к следующей строке.

У кого-нибудь есть решение для моей проблемы? Заранее спасибо за вашу помощь!

Я считаю, что нашел свое решение. Мне пришлось объявить массив в модуле, содержащем код, чтобы запустить программу как общедоступную переменную. После того как я это сделал и изменил код, значения были правильно записаны в массив.

Однако, если у кого-то есть другие решения, я хотел бы знать. Я не так разбираюсь в VBA, поэтому хочу услышать другие решения.

  • Excel Macro Userform - отдельный код, обрабатывающий несколько флажков
  • Как определить, была ли нажата конкретная клавиша?
  • Вызов массива по пользовательской форме Завершение / закрытие VBA
  • Как настроить мой GIF, когда я запускаю пользовательскую форму? (VBA) ,
  • Как использовать значение переменной Userform Global Variable в разных книгах с помощью VBA
  • Динамическое название диаграммы из пользовательской формы
  • Отобразить строку текста в текстовом поле на основе множественного флажка в пользовательской форме
  • Как добавить сразу несколько строк данных из UserForm в Excel DataBase
  • Автоматическое заполнение пользовательской формы Excel в файле excel из vbscript
  • Выровнять Userform с ячейками в Excel
  • vba сетка информации о пользовательской форме vba в ярлыке
  • Interesting Posts

    как вставлять только значения в excel

    Установите общий переключатель и макрос окна, чтобы отобразить следующие три строки, когда выбран один флажок

    Не удалось прочитать лист excel

    Dax суммирует все поля с одинаковым значением

    Неизвестная ошибка времени выполнения при использовании .End (xlUp) в диапазоне ячеек (код: 800A03EC)

    Обработчик ошибок, когда в VBA не обнаружены ячейки (ошибка 1004)

    Excel для Azure SQL с параметрами запроса

    Сценарий VBS для открытия Excel и запуска макроса не работает

    Excel – Округление даты и времени – вверх или вниз до часа

    Excel – возвращает минимальное значение в один список, отсутствующий в другом

    Использование функции timezone () в таблице с привязкой к excel

    Excel VBA. Объединение последовательных и не последовательных чисел.

    Используйте циклы VBA для поиска изменяющегося списка значений и удаления их?

    Я получаю сообщение об ошибке «Вызываемый объект отключился от своих клиентов» при автоматизации моего веб-сайта

    Преобразование нескольких элементов в ячейке в несколько строк

    Давайте будем гением компьютера.