Объект UserForm
Объект UserForm — это окно или диалоговое окно, которое является частью пользовательского интерфейса приложения.
Коллекция UserForms — это коллекция, элементы которой представляют каждый загруженный UserForm в приложении. Коллекция UserForms имеет свойство Count, метод Item и метод Add. Свойство Count определяет число элементов в коллекции; свойство Item (элемент по умолчанию) — конкретный элемент коллекции; а метод Add позволяет добавить элемент UserForm в коллекцию.
Синтаксис
UserForm UserForms [ . Item ](index)
Примечания
Коллекцию UserForms можно использовать для перебора всех загруженных в приложение форм. В ней определяется внутренняя глобальная переменнаяUserForms. Вы можете передать UserForms(index) функции, аргумент которой указан как класс UserForm.
Свойства пользовательских форм определяют их внешний вид, в том числе позицию, размер и цвет, а также некоторые аспекты их поведения.
Пользовательские формы также отвечают на события, запускаемые пользователем или системой. Например, вы можете добавить в процедуру события Initialize для элемента UserForm код, позволяющий инициализировать переменные уровня модуля до отображения элемента UserForm.
В дополнение к свойствам и событиям можно использовать методы для управления формами пользователей с помощью кода. Например, с помощью метода Move можно изменить расположение и размер userForm.
При разработке форм пользователя установите свойство BorderStyle для определения границ и установите свойство Caption для того, чтобы поместить текст в заголовок. В коде можно использовать методы Hide и Show, чтобы сделать UserForm невидимым или видимым во время запуска.
Элемент UserForm имеет тип данных Object. Вы можете объявить переменные с типом UserForm, прежде чем присвоить их экземпляру типа UserForm, объявленному во время разработки. Аналогичным образом, можно передать аргумент в процедуру как значение типа UserForm. Вы можете создавать в коде несколько экземпляров пользовательских форм с помощью ключевого слова New в операторах Dim, Set и Static.
Вы можете получить доступ к коллекции элементов управления в UserForm с помощью коллекции элементов управления. Например, чтобы скрыть все элементы управления в UserForm, используйте код, аналогичный следующему.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Построение экранных форм (Forms)
Содержание
Введение
Чтобы дать указания макросу для выполнения действий со сложными условиями, необходимо создание экранных форм, так как обычных диалогов уже не хватает. Точнее, придется выводить множество запросов, что явно не отвечает требованиям эргономики интерфейса. Они ничем не отличаются от любых диалогов во всех программах, кроме возможности добавления управляющих элементов.
Но! Вспомните, сколько раз вам приходилось выискивать нужный пункт в диалоге или пытаться осознать, о чем вас спрашивают? Учтите это при разработке собственных форм. Правила создания диалогов крайне просты: всё запрошено, но сделано это кратко и понятными словами.
Использование форм достаточно сложно и вошло в основной курс изучения только в 2021 году. Более подробно, чем изложено здесь, это будет обсуждаться только с профильными группами или в элективном курсе.
Создание формы
Форма должна быть сохранена в каком-либо проекте (project): шаблоне или документе.
Щелчком правой клавишей мыши в любом месте перечня объектов проекта (выберем текущий документ) в окне Project Explorer (в левом верхнем углу) вызовем контекстное меню, через которое и происходит добавление формы.
Будет создана категория Forms, в которой разместится новая форма, получающая название по умолчанию UserForm1. Появится инструментальная панель Toolbox, содержащая элементы управления для вставки в форму.
Сама форма активизируется, то есть появится рамка с точками выделения, за которые (белые) можно изменять размеры, что мы и сделаем для удобства вывода на сайт. Впоследствии к активации окна формы приведет щелчок мышью на свободном месте или заголовке.
Щелкнем на ней правой кнопкой мыши и выберем пункт контекстного меню Properties (Свойства), в результате чего откроется окно под списком проектов. (Если оно не было открыто ранее.)
Всего свойств 34, но обсуждаться они пока будут только по необходимости.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Разберем подробно каждый элемент, так как именно на них основано всё программирование форм.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Теперь создадим аналогичную команду для кнопки Cancel, пойдя наиболее сложным путем, чтобы проиллюстрировать, как создаются программы для методов, не формируемые автоматически.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Сотрем лишние пустые программы, которые скорее всего создались во время ваших экспериментов и отредактируем нужную нам. Чтобы понять, как, необходимо определить, какой из двух возможных способов обработки формы вы будете использовать.
Способ 1. Все необходимые действия производятся в процедурах нажатия кнопок, после чего форма скрывается (Hide) или уничтожается (Unload). Вариант является очевидным и стандартным, но не всегда приемлемым.
Способ 2. Форма скрывается (Hide), после чего происходит обработка из вызвавшей форму программы. Вариант требует дополнительных усилий, но именно он понадобится для подавляющего большинства случаев.
Разберем их реализацию по порядку.
Выполнения действий из формы
Наверно, этот вопрос является ключевым для написания начальных программ с задействованием формы.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Во-вторых, вместо MsgBox нужно ввести код, нужный для данного случая.
В-третьих, If. Else хватило только потому, что выбираем один вариант из двух. Иначе потребуется более сложная конструкция.
Выполнения действий в вызвавшей процедуре
Такой способ будет наиболее эффективен, если форму придется открывать много раз
Первый вопрос, который возникает, касается того, какая же кнопка была нажата для закрытия формы: подтверждение или отказ.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
В данном случае использован объектный метод
Заметьте, команда скрывает форму, а не удаляет ее. В результате можно программно обратиться к отдельным элементам и изучить, что они содержат. То есть проанализировать выбор и/или ввод пользователя.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Все приведенные комментарии для предыдущего способа, действительны и здесь.
Побочный эффект будет заключаться в том, что все изменения, произведенные в форме, сохранятся при ее повторном показе. С этим придется либо бороться, либо, наоборот, удастся воспользоваться.
Для более сложных диалогов можно создавать кнопки, изменяющие настройки других элементов. В качестве классического примера можно привести кнопку, восстанавливающую значения по умолчанию.
Примеры форм
Диалог обратной связи интеллектуальной системы выделения авторов в списке литературы. Производит анализ текста и расширение/уменьшение выделения справа и слева в зависимости от нажатой кнопки диалога.
Примитивное информирование пользователя о шаблоне, построенное на базе MsgBox, где сообщение принудительно разбито на строки.
Работа со списком научных журналов (3792 штуки). Доступно добавление, удаление, редактирование. Накапливается информация о вариантах написания и правильном сокращенном написании, включая его версии в разные периоды.
Элемент системы проверки списков литературы, позволяющий выявлять некоторые часто встречающиеся проблемы библиографических списков с безошибочной эффективностью на 5–10 порядков выше, чем у профессионального редактора.
Объекты управления и методы
Ниже приведены основные объекты, связанные с формами, и перечислены их методы (не свойства!). Найти даже эту информацию достаточно сложно. Так что, не обессудьте, обсуждаться они пока не будут.
Восклицательным знаком обозначены методы, создаваемые автоматически при двойном щелчке на элементе управления.
Методы UserForm
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Методы Label
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Методы SpinButton
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Методы CommandButton
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Методы TextBox
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Проверка введенных данных
Для начала хочется отметить, что многие программисты либо совсем игнорируют подобное действие, либо доводят его до абсурда, вводя пользователей в бешенство. Учтите эти две крайности и постарайтесь их избежать. Лучшим помощником в этом будет многократное испытание на собственной шкуре.
Это действие разумнее всего производить в самой форме, не загромождая программу.
Прежде чем погружаться в реализацию, надо разобраться, какие варианты проверки и/или ограничений можно использовать.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Для того, чтобы помочь пользователю, можно заранее запрограммировать наиболее часто используемые варианты, оставив и для него возможность ввести нечто отличное. Для этих целей можно использовать комбинированный список или радиокнопки, дополненные полем ввода.
Обращение к форме из программы
Это уже обсуждено в примерах, но, все же, уточним еще раз.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
В пределах модуля программного кода самой формы, такой префикс не требуется.
Удаление формы из памяти
Производится командой (инструкцией):
После выгрузки объекта, он полностью удаляется из памяти, освобождая ее. Но обращение к нему также становится невозможным.
Элементы управления формы
Обсудим все элементы, которые вынесены на панель Toolbox и могут быть использованы в форме на примере Office 2019. (Задействованные выше скриншоты относились к Word 2003, работа элементов которого комментироваться не будет, хотя отличия и есть.)
Для получения названия элемента нужно навести на него курсор мыши.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Общие замечания, свойства и настройки
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Label (надпись)
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
TextBox (поле ввода текста)
Элемент, необходимый для ручного ввода значения пользователем. В упрощенном понимании, заменяет InputBox.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
CommandButton
Командная кнопка — самый стандартный активный элемент, нажатие которого в норме производит запуск программы.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
TabStrip
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
MultiPage
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
ScrollBar
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
SpinButton
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Image (картинка)
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Порядок обхода элементов формы (Tab Order)
Создание формы однозначно относится к творческому виду работ. Отсюда вытекает определенный неизбежный «хаос» в процессе вставки и размещения управляющих элементов. Оставление их в таком виде, как есть, безусловно следует считать недопустимой неряшливостью.
Макросы Excel — пользовательские формы
Основным преимуществом UserForm является то, что вы можете сэкономить время, которое вы тратите на то, как и как информация должна быть заполнена.
Создание пользовательской формы
Чтобы создать пользовательскую форму, выполните следующие действия:
Пользовательская форма появляется в правой части окна.
Понимание пользовательской формы
Разверните окно UserForm.xlsx — UserForm1.
Вы находитесь в режиме дизайна сейчас. Вы можете вставить элементы управления в пользовательскую форму и написать код для соответствующих действий. Элементы управления доступны в панели инструментов. Свойства UserForm находятся в окне свойств. UserForm1 (подпись UserForm) указывается в разделе «Формы» в проводнике проектов.
Изменения отражаются в пользовательской форме, свойствах и проводнике проекта.
Элементы управления в панели инструментов
Пользовательская форма будет иметь разные компоненты. Когда вы нажимаете на любой из компонентов, вам либо будут предоставлены инструкции о том, что и как должна быть предоставлена информация, либо вам будут предоставлены варианты (варианты) для выбора. Все это обеспечивается с помощью элементов управления ActiveX в панели инструментов пользовательской формы.
Excel предоставляет два типа элементов управления — элементы управления формы и элементы управления ActiveX. Вы должны понимать разницу между этими двумя типами элементов управления.
Элементы управления формой
Элементы управления формой — это оригинальные элементы управления Excel, которые совместимы с более ранними версиями Excel, начиная с Excel версии 5.0. Элементы управления формой также предназначены для использования на листах макроса XLM.
Вы можете запускать макросы с помощью элементов управления формы. Вы можете назначить существующий макрос элементу управления, или написать или записать новый макрос. При нажатии на элемент управления макрос. Вы уже научились вставлять командную кнопку из элементов управления формы на листе для запуска макроса. Однако эти элементы управления не могут быть добавлены в пользовательскую форму.
Элементы управления ActiveX
Элементы управления ActiveX могут использоваться в пользовательских формах VBA. Элементы управления ActiveX имеют широкие свойства, которые можно использовать для настройки их внешнего вида, поведения, шрифтов и других характеристик.
У вас есть следующие элементы управления ActiveX в UserForm ToolBox —
В дополнение к этим элементам управления Visual Basic предоставляет функцию MsgBox, которую можно использовать для отображения сообщений и / или запроса пользователя о действии.
В следующих нескольких разделах вы поймете эти элементы управления и MsgBox. Затем вы сможете выбрать, какой из этих элементов управления требуется для разработки пользовательской формы.
этикетка
Вы можете использовать ярлыки для идентификации, отображая описательный текст, такой как заголовки, подписи и / или краткие инструкции.
Текстовое окно
Вы можете использовать TextBox в виде прямоугольника для ввода, просмотра или редактирования текста. Вы также можете использовать TextBox в качестве статического текстового поля, которое представляет информацию только для чтения.
Список
Вы можете использовать список для отображения списка одного или нескольких элементов текста, из которых пользователь может выбирать. Используйте список для отображения большого количества вариантов, которые различаются по количеству или содержанию.
Есть три типа списков —
Поле со списком с одним выбором — Поле со списком с одним выбором включает только один выбор. В этом случае поле списка напоминает группу кнопок выбора, за исключением того, что поле списка может более эффективно обрабатывать большое количество элементов.
Список выбора множественного выбора — Список списка множественного выбора включает либо один выбор, либо смежные (смежные) варианты.
Поле со списком расширенного выбора — Поле со списком расширенного выбора позволяет выбрать один, непрерывный и несмежный (или несвязанный) выбор.
Поле со списком с одним выбором — Поле со списком с одним выбором включает только один выбор. В этом случае поле списка напоминает группу кнопок выбора, за исключением того, что поле списка может более эффективно обрабатывать большое количество элементов.
Список выбора множественного выбора — Список списка множественного выбора включает либо один выбор, либо смежные (смежные) варианты.
Поле со списком расширенного выбора — Поле со списком расширенного выбора позволяет выбрать один, непрерывный и несмежный (или несвязанный) выбор.
Вы можете выбрать один из этих типов списков в окне свойств.
Далее вы можете написать код для действий по выбору элемента в списке. В противном случае вы можете просто отобразить выбранный текст, как в случае заполнения кода проекта в отчете.
Поле со списком
Вы можете использовать ComboBox, который объединяет текстовое поле со списком для создания выпадающего списка. Поле со списком является более компактным, чем поле со списком, но требует, чтобы пользователь щелкнул стрелку вниз, чтобы отобразить список элементов. Используйте поле со списком, чтобы выбрать только один элемент из списка.
Вывод данных в форму по мере выполнения программы
Поэтапный вывод по мере выполнения скрипта
Добрый день! Есть очень долгий скрипт, обрабатывающий форму. Работает 6-7 минут, поэтому я.
Динамический вывод работы перл-скрипта по мере его выполнения
Здравствуйте. Перешуршал много страниц в инете на эту тему, видел много разных способов, часть из.
Отображение данных на сайте по мере выполнения php-скрипта
Добрый вечер! Интересует такой вопрос. Есть примитивный php-скрипт, который в цикле анализирует.
Как сделать, чтобы вывод данных в форму происходил до завершения программы?
Как сделать, чтобы вывод данных в форму происходил до завершения программы? Есть маленькая.
Я так понял у вас используется цикл обработки данных.
Да нет, последовательность работы такая:
1. Выводится форма с кучей всяких установок (где, что, как проверять)
2. Определяется строковая переменная (tmpStr), пока пустая.
2. После нажатия кнопки «Начать» начинают последовательно выполняться подпрограммы, каждая что-то делает.
3. после завершения работы первой Sub в конец переменной tmpStr добавляется некоторое сообщение.
4. значение переменной выводится в Label (Label.Caption=tmpStr)
5. Выполняется следующая Sub, создающая свое сообщение, добавляемое в конец tmpStr (tmpStr =tmpStr & «Текст2»)
6. значение переменной выводится в Label (Label.Caption=tmpStr)
и т.д.
А в результате программа сначала долго все проверят, ничего не выводя, а затем выводит последнее (самое полное) сообщение. Это как-то не Айс.
VBA Excel. Элемент управления TextBox (текстовое поле)
Элемент управления пользовательской формы TextBox в VBA Excel. Использование текстового поля для ввода и вывода информации, основные свойства, примеры. Привязка текстового поля к ячейке.
Элемент управления TextBox
Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.
Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.
Свойства текстового поля
Свойство | Описание |
---|---|
AutoSize* | Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height. |
AutoTab | Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена. |
ControlSource | Ссылка на источник данных для поля TextBox. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на TextBox. |
Enabled | Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым). |
Font | Шрифт, начертание и размер текста в поле. |
Height | Высота текстового поля. |
Left | Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля. |
Locked | Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены. |
MaxLenght | Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет. |
Multiline | Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста. |
PasswordChar | Задает символ, который будет отображаться при вводе знаков пароля. |
TabIndex | Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0. |
Text** | Текстовое содержимое (значение) поля (=Value). |
TextAlign | Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю. |
Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля. |
Value** | Текстовое содержимое (значение) поля (=Text). |
Visible | Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт. |
Width | Ширина текстового поля. |
WordWrap | Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен. |
* При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.
В таблице перечислены только основные, часто используемые свойства текстового поля. Все доступные свойства отображены в окне Properties элемента управления TextBox.
Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.
Привязка текстового поля к ячейке
Привязать элемент управления TextBox к ячейке на рабочем листе можно двумя способами.
1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:
2. Присвоить свойству ControlSource адрес ячейки в коде VBA Excel: