Одной из лучших книг по VBA является книга Джона Уокенбаха «Профессиональное программирование на VBA в Excel 2002». У этого автора есть такая же книга и для более поздних версий Excel.
Сейчас появилась возможность кое-что вспомнить по применению VBA. Сам Уокенбах относится к динамическому созданию форм как к не имеющему практической пользы приёму. Но это не всегда так.
Например, сейчас я решил потратить часть своего времени на создание некоего модуля на VBA по заполнению таблиц мониторинга по кадрам по школе. Таких кадровых таблиц около 10. Главное связать все расчеты периодов и количества лет к конкретной дате. Конечно, для этого сначала надо иметь выверенную базу данных по каждому учителю школы, чтобы создавать правильно заполненные листы Excel, содержащие отдельные таблицы по кадрам. После получения отчетов в Excel останется тупо перенести данные руками на сайт мониторинга.
Для ведения базы данных необходимо иметь модуль заполнения и корректировки данных по каждому учителю. Так как полей может быть множество, то появляется уже смысл в динамическом создании формы ввода и корректировки данных.
Все предлагаемые сейчас в Интернете методы оказались или неработоспособны, или в них надо долго разбираться, или надо каждый раз регистрироваться на сайте, чтобы получить доступ к выложенным файлам. Поэтому я и обратился к указанной выше книге и автору. Советы от него и предлагаемые макросы просто прекрасны.
Предлагаю переделанный модуль для динамического программирования конкретной формы. Возникла лишь одна проблема с именами контролов. Их изменить программно не получается, поэтому я и пошёл по пути получения имён TextBox через текст в них.
У меня всё работает. До сих пор я использую по старинке офис 2003, хотя опробовал в работе и 2016, у которого очень много дополнительных возможностей. В примере список полей берётся с последнего листа, а сам этот список получен транспонированием шапки.
Шапка – пока лишь некоторая заготовка.