Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Элемент управления TextBox (текстовое поле)

    Элемент управления пользовательской формы TextBox в VBA Excel. Использование текстового поля для ввода и вывода информации, основные свойства, примеры. Привязка текстового поля к ячейке.

    Элемент управления TextBox

    UserForm.TextBox – это элемент управления пользовательской формы, предназначенный для ввода, редактирования и вывода информации в текстовом формате.

    Текстовое поле на пользовательской форме

    Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.

    Если с помощью текстового поля требуется вводить заранее известную информацию, элементы которой можно сгруппировать в список, то в этом случае удобнее вместо элемента управления TextBox использовать ListBox или ComboBox.

    Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.

    Иногда, если на пользовательской форме используется только одно текстовое поле и кнопка «OK» (или кнопки «OK» и «Отмена»), для ввода информации такую форму можно заменить функцией InputBox, а для вывода информации, когда не требуется редактирование отображаемого текста, – функцией MsgBox.

    Свойства текстового поля

    Свойство Описание
    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 необходимо указать адрес ячейки:

    Окно Properties-TextBox

    2. Присвоить свойству ControlSource адрес ячейки в коде VBA Excel:

    Теперь ячейка C5 активного листа будет привязана к элементу управления TextBox1. При открытии формы текстовое поле будет заполнено значением ячейки C5.

    Чтобы наглядно ознакомиться с взаимозависимостью значения ячейки C5 и содержимого текстового поля, разместите на пользовательской форме еще какой-нибудь элемент управления и откройте ее в немодальном* окне:

    Измените значение ячейки C5 и нажмите клавишу «Tab» или «Enter» – изменения будут продублированы в текстовом поле на форме. Измените содержимое поля TextBox1, нажмите клавишу «Tab» или «Enter», передав фокус другому элементу управления, – изменения продублируются в ячейке C5.

    Чтобы привязать текстовое поле к ячейке неактивного листа, необходимо в адресе указать имя листа по ярлыку с разделителем «!»:

    Если имя листа содержит пробел, заключите его в одинарные кавычки:

    Точно также адрес ячейки конкретного листа можно указать непосредственно в окне Properties элемента управления TextBox в поле свойства ControlSource (без парных кавычек).

    * Отображение пользовательской формы в немодальном окне позволяет редактировать ячейки на рабочем листе Excel, не закрывая форму.

    Примеры использования TextBox

    Пример 1
    Обмен содержимым между текстовым полем, переменной и ячейкой на рабочем листе:

    Пример 2
    Программное создание элемента управления TextBox, размещение его по центру пользовательской формы, добавление всплывающей подсказки и текста по умолчанию.

    Предположим, что текстовое поле предназначено для ввода даты, поэтому добавляем соответствующую подсказку, а в качестве текста по умолчанию – текущую дату.

    Создаем новую пользовательскую форму с именем UserForm2. Если у вас другое имя формы, это не имеет значения, так как обращаться к ней будем с помощью ключевого слова «Me». Открываем модуль созданной формы и вставляем в него следующий код VBA Excel:

    В результате выполнения кода откроется следующая форма с всплывающей подсказкой при наведении на TextBox курсора:

    TextBox с всплывающей подсказкой

    * Значения свойств Left и Top рассчитаны для Excel 2016. Вычитаемые числа зависят от толщины границ пользовательской формы, которые в других версиях Excel могут отличаться.

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    16 комментариев для “VBA Excel. Элемент управления TextBox (текстовое поле)”

    1. Добрый вечер!
      У меня такая проблема с текстовым полем.
      У меня есть таблица, имеющая три столбца. Первый столбец — возрастная группа, второй столбец — год, третий — количество населения.
      Из первых двух столбцов в пользовательской форме я должен сделать два комбобокса, из третьего текстовое поле. Операция такая должна быть: после выбора критериев из двух комбобоксов нужно, чтобы в текстовое поле ввелось значение из третьего столбца.
      Какой код мне поможет?

      1. Евгений

        Привет!
        Объединенные ячейки в этих трех столбцах есть?

    2. Добрый день, Евгений. Вопрос по этой теме. В TextBox ввожу дату 23/02/2021, а он передает это значение в ячейку как 02/23/2021 и формула выдаёт ошибку. Связаны TextBox и ячейка .ControlSource = "Лист1!A5"

    3. Пробовал такой способ
      .Text = Format(Sheets("Лист1").[A5], "DD.MM.YYYY")
      Всё равно пишет сначала месяц, потом день.
      А если в TextBox ввести 02/23/2021, тогда в ячейке записывает 23/02/2021.

      1. Евгений

        Добрый день, Сергей!
        Используйте следующий код для приведения даты к нужному формату:

        1. Таже петрушка(
          Отображает день, месяц. А в ячейку передаёт наоборот — месяц, день.
          Почему-то меняет их местами.

          1. Евгений

            Попробуйте добавить в модуль формы еще одну процедуру:

            1. Евгений, спасибо. Заработало. Но возникла другая проблема. Появилась ошибка #Число! в формуле, которая использует эту дату для вычисления.

            2. Сделал запись в ячейку, через переменную х типа Дата и все заработало. Спасибо за помощь. Изменил процедуру:

    4. Віталій

      Добрый день, Евгений. Вопрос по этой теме. В TextBox макросом вносится текст — Изделие, модель, номер… и действует гарантия или нет. И хочется, чтобы если гарантия закончилась то текст «Гарантия закончилась» выделялся красным цветом. (А не весь текст в текстбоксе) Это возможно?

      1. Евгений

        Здравствуйте, Віталій!
        Это невозможно. Не знаю, подойдет ли вам, но вы могли бы отметку о гарантии выводить в отдельном TextBox.

    5. Владимир

      Добрый день! Как в текстбоксе формы задать шаблон ввода, например телефона +7(918)000-00-00 или в каком разделе можно почитать. Спасибо.

    Обсуждение закрыто.