Excel vba textbox format

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

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

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

функция Format()

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

В нем использовал предопределенный формат Standard, но он дает только 2 цифры после запятой, а мне нужны все!

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Запишите рекордером нужно е форматирование ячейки и посмотрите получившийся код. Используйте аналогичный для ТекстБокса.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#5

28.04.2013 03:03:45

был один вопрос

Цитата
evgmaz пишет:
Как отформатировать в TextBox значение с разделителем тысяч (например, пробелом).

где здесь сказано про количество знаков после запятой?

так что надо-то на самом деле?
может быть, примеры привести, если словами не получается описать задачу?

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

#6

28.04.2013 05:06:02

Цитата
Юрий М пишет: Запишите рекордером…

Спасибо за совет! Попробуем!

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

воспользовался советом от Юрия М, но вот такой код в процедуре TextBox1_KeyPress:
st = TextBox1.Value

If KeyAscii >= 48 And KeyAscii <= 57 Then
TextBox1.Text = Format(st, «#,###» ;)
Exit Sub
Else
KeyAscii = 0
Exit Sub
End If

дает в итоге неправильный формат, типа 1 234 5678 (т.е. делит не по 3 разряда, а в конце оставляет 4).
А должно быть: 12 345 678

Не пойму то ли ошибка в использовании ф-ии Format, то ли не корректность ее использования в процедуре KeyPress (и надо поискать другую процедуру)?!

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#8

28.04.2013 14:27:38

в окне immediate:

Код
? format(12345678, "#,##0")
12 345 678

а что там у вас в переменной st — нам, извините, не видно  :(

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

#9

28.04.2013 14:41:06

Цитата
ikki пишет: а что там у вас в переменной st — нам, извините, не видно   :(  

Подозрение у вас правильное, в процедуре KeyPress в переменную st попадает число до нажатия клавиши, а не после, поэтому форматирование неверное.

Если сделал процедуру Change, типа
Private Sub TextBox1_Change()
st = TextBox1.Value
TextBox1.Text = Format(st, «#,##0»)  
End Sub

то все заработало верно…..Но какой-то осадок остался, кажется все можно достойно решить в рамках одной процедуры KeyPress, просто я увы не до конца понимаю «график» ее работы.
спасибо за советы.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

имхо, правильнее именно разделить эти две задачи — недопущение нажатия неправильной клавиши и форматирование.
обратите внимание — нажатие клавиши del, к примеру, в KeyPress не обрабатывается. точнее — это событие просто не возникает, а форматировать изменённое значение всё равно нужно.

не стоит пихать всё в один обработчик, создавая себе трудности и запутывая код.
ваш вариант с двумя процедурами кажется мне наиболее логичным.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

Спасибо, всегда приятно, что свои мысли (подходы) одобряются профессионалами

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

И все таки продолжу:

Проблема с плавающей запятой.
Если все то же самое проделать с плавающей запятой (в процедуре TextBox1_Change())
st=TextBox1.Value
TextBox1 = Format(st, «#,##0.##»)
то в итоге вообще я не понимаю Excel

Ввожу: 12345.6789
Полагаю, что получу: 12 345.67
А получаю: 1,23 (цифра 4 уже не вводится, а запятая ввелась сама). Запятая-это что делить разрядов, либо математический знак?

Запись «#,##0.##» проверял с NumberFormat применительно к ячейкам, то все работает ок!
В чем может быть проблема?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#13

28.04.2013 19:52:13

Цитата
evgmaz пишет:
Ввожу: 12345.6789… Полагаю, что получу: 12 345.67

Неправильно полагаете — должно получиться 12 345,68.
Не могу также понять необходимость переменной st — зачем она вообще?

Цитата
цифра 4 уже не вводится, а запятая ввелась сама

Наверное, Вы забываете, что событие Change возникает после ввода КАЖДОГО символа.
Также не могу понять, почему Вы вводите точку в качестве разделителя целой и дробной части — вводите запятую.
И сделайте всё на событие Exit:

Код
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Me.TextBox1 = Format(Me.TextBox1, "#,##0.##")
End Sub
 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

#14

29.04.2013 00:17:08

Цитата
Юрий М пишет: Не могу также понять необходимость переменной st — зачем она вообще?

st можно не вводить (это не принципиально!). Согласен.
Точку ввожу из-за того, что при помещении значения TextBox в ячейку листа, число вносится как число, а не как текст. (Раньше была запятая, от которой отказался, так как водился текст).
Кстати поменял . на , также ничего не работает!

С Exit конечно все работает, то хочется чтобы форматировалось во время набора, а не после выхода из TextBox…..

Продолжаю осмысливать идеи….но пока нет результата!

Изменено: evgmaz10.05.2013 00:07:08

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

предлагаю попробовать так:
1. ПЕРЕД каждым форматированием полученную строку из текстбокса избавлять от пробелов
2. ЕСЛИ последний знак в строке — точка, то временно убирать его
3. превращать полученную строку в число и форматировать Format‘ом
4. ЕСЛИ в конце была точка — добавить её к результату форматирования

Изменено: ikki29.04.2013 00:46:42

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#16

29.04.2013 00:41:57

Цитата
evgmaz пишет:
Точку ввожу из-за того, что при помещении значения TextBox в ячейку листа, число вносится как число, а не как текст.

В TextBox ВСЕГДА текст, вне зависимости от того, вводите Вы точку или запятую.

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

Совершенно верно, в TextBox всегда текст (это хорошо известно), но вот когда данные из TextBox я копирую в ячейку Листа, то Exel воспринимает текст с точкой как число, а текст с запятой как текст.
В первом случае с ячейкой можно работать как с числом (например, прибавить 1), а во втором случае при прибавлении 1 на автомате получите ошибку!
Я прихожу к выводу, что тема форматирования в Exel самая муторная. Много раз возвращался к этой теме (за несколько лет) и всякий раз какая-то нелогичность возникает!
Ни отчего другого в Exel не возникает подобного дискомфорта!

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Так и передавайте его в ЯЧЕЙКУ числом: [A1] = CDbl(Me.TextBox1)

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#19

29.04.2013 02:32:05

Цитата
evgmaz пишет:
Exel воспринимает текст с точкой как число, а текст с запятой как текст

Не согласен: это VBA воспринимает точку, как разделитель. А вот Excel как раз наоборот. Попробуйте ввести в ячейку 12345.6789

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

#20

29.04.2013 02:34:51

Цитата
ikki пишет: предлагаю попробовать так…

Попробую ваш вариант, но вот что настораживает:
Почему с целым числом обсуждаемый с вами утром вариант с процедурой Change и кодом
TextBox1.Text = Format(st, «#,##0» ;)
работает превосходно!

А ДЛЯ ДЕЙСТВИТЕЛЬНОГО ЧИСЛА (когда запятая есть) вариант с процедурой Change и кодом
TextBox1 = Format(TextBox1, «#,##0.##» ;)  уже не работает??????!!!!! Получается полностью необъяснимый результат!
И ради это приходится выкручиваться разными способами (например, как вы указали)?!!!!

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

Юрий М, ну, Вы только подтверждаете сказанное….Это 12345.6789 — Exel воспринимает как текст, а если 12345.6789 находится в TextBox, то Cells(1,1) =TextBox.value получится нормальное хорошее число 12345,6789
Я сам удивился, когда это обнаружил, поэтому и поменял , на . в обработке TextBox.
Отчего еще больше запутался!

Короче ни с запятой ни с точкой пока нет результата!

Изменено: evgmaz10.05.2013 00:08:25

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#22

29.04.2013 02:52:43

Цитата
evgmaz пишет:
а если 12345.6789 находится в TextBox, то Cells(1,1) =TextBox.value получится нормальное хорошее число

Правильно — «вмешивается» VBA. И вообще не пойму — зачем форматировать именно в TextBox? Что Вам даст там наличие пробела между разрядами? Форматируйте уже при присвоении значения ячейке. Не вижу вообще проблемы: как писал выше — cdbl нормально справляется. А вот менять точку на запятую можно и при вводе.

 

evgmaz

Пользователь

Сообщений: 37
Регистрация: 03.04.2013

#23

29.04.2013 03:29:27

Цитата
Юрий М пишет:
1). И вообще не пойму — зачем форматировать именно в TextBox? Что Вам даст там наличие пробела между разрядами?
2). Форматируйте уже при присвоении значения ячейке. Не вижу вообще проблемы: как писал выше — cdbl нормально справляется. А вот менять точку на запятую можно и при вводе.

Ответы:
1). Ну это вопрос чисто эстетики при работе с Формой конечного пользователя
2). В ячейке все легко отформатируем, даже не задавал бы вопросов.
3). За Cdbl спасибо!

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

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:

UserForm1.TextBox1.ControlSource = «C5»

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

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

Sub Test()

UserForm1.TextBox1.ControlSource = «C5»

UserForm1.Show 0

End Sub

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

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

UserForm1.TextBox1.ControlSource = «Лист2!A3»

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

UserForm1.TextBox1.ControlSource = «‘Мой лист’!B6»

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

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

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

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

‘Присвоение текстовому полю значения

‘ячейки A2 и переменной a1

UserForm1.TextBox1.Text = Range(«A2»)

UserForm1.TextBox1.Text = a1

‘Присвоение ячейке B3 и переменной a2

‘значения текстового поля

Cells(3, 2) = UserForm1.TextBox1.Text

a2 = UserForm1.TextBox1.Value

‘Свойства Text и Value элемента

‘управления TextBox равнозначны

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Private Sub UserForm_Initialize()

Dim myTextBox As Control

‘Создаем новый TextBox и присваиваем его переменной

Set myTextBox = Me.Controls.Add(«Forms.TextBox.1»)

‘Задаем размеры и заголовок пользовательской формы

With Me

  .Height = 100

  .Width = 220

  .Caption = «Форма №2»

End With

‘Присваиваем значения свойствам текстового поля

With myTextBox

  .Width = 100

  .Height = 20

  ‘Left и Top рассчитаны для Excel 2016*

  .Left = 60 5

  .Top = 40 15

  ‘Добавляем всплывающую подсказку

  .ControlTipText = «Введите дату подписания договора»

  ‘Вставляем в поле текущую дату

  .Text = Format(Now, «DD.MM.YYYY»)

  ‘Выравниваем текст по центру

  .TextAlign = 2

End With

End Sub

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

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

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

Содержание

  1. Свойство TextBox.Format (Access)
  2. Синтаксис
  3. Замечания
  4. Пример
  5. Поддержка и обратная связь
  6. TextBox.Format property (Access)
  7. Syntax
  8. Remarks
  9. Example
  10. Support and feedback
  11. VBA Excel. Элемент управления TextBox (текстовое поле)
  12. Элемент управления TextBox
  13. Свойства текстового поля
  14. Привязка текстового поля к ячейке
  15. How to Format VBA TextBox To Long Date
  16. 1 Answer 1

Свойство TextBox.Format (Access)

Используйте свойство Формат , чтобы настроить способ отображения и печати чисел, дат, времени и текста. Для чтения и записи, String.

Синтаксис

expression. Формат

Выражение Переменная, представляющая объект TextBox .

Замечания

Используйте один из стандартных форматов или можно создать пользовательский формат с помощью символов форматирования.

Свойство Format использует разные параметры для разных типов данных. Сведения о параметрах для определенного типа данных см. в одном из следующих разделов:

В Visual Basic введите строковое выражение, соответствующее одному из предопределенных форматов, или введите пользовательский формат.

Свойство Format влияет только на то, как отображаются данные. Это не влияет на способ хранения данных.

Microsoft Access предоставляет стандартные форматы для типов данных «Дата/время», «Число» и «Валюта», «Текст» и «Memo» и «Да/Нет». Стандартные форматы зависят от страны или региона, указанного при двойном щелчке Параметра региона в панель управления Windows. Для доступа отображаются форматы, соответствующие выбранной стране или региону. Например, если на вкладке Общие выбран английский (США), значение 1234,56 в формате валюты отображается как 1 234,56 долл. США, а если на вкладке Общие выбран английский (британский), число отображается как 1 234,56.

Если задать свойство Format поля в представлении конструктора таблицы, Access использует этот формат для отображения данных в таблицах. Он также применяет свойство Format поля к новым элементам управления в формах и отчетах.

Используйте следующие символы в пользовательских форматах для любого типа данных.

Символ Смысл
(пробел) Отображать пробелы в виде литеральных символов.
«ABC» Отображение всех элементов в кавычках в виде литеральных символов.
! Принудительное выравнивание по левому краю вместо выравнивания по правому краю.
* Заполните доступное пространство следующим символом.
Отображение следующего символа в виде символа литерала. Вы также можете отобразить литеральные символы, поместив вокруг них кавычки.
[ цвет ] Отображение отформатированных данных в цвете, указанном между квадратными скобками. Доступные цвета: черный, синий, зеленый, голубой, красный, пурпурный, желтый, белый.

Вы не можете смешивать настраиваемые символы форматирования для типов данных Number и Currency с символами даты и времени, да/нет или текста и memo форматирования.

Если вы определили маску ввода и задали свойство Format для одних и того же данных, свойство Format имеет приоритет при отображении данных, а маска ввода игнорируется. Например, если создать маску ввода пароля в представлении конструктора таблицы, а также задать свойство Format для того же поля в таблице или в элементе управления в форме, маска ввода пароля игнорируется, а данные отображаются в соответствии со свойством Format .

Пример

В следующих трех примерах свойство Format задается с помощью предопределенного формата.

В следующем примере задается свойство Format с помощью пользовательского формата. В этом формате дата отображается как январь 2018 г.

В следующем примере показана функция Visual Basic, которая форматирует числовые данные с помощью формата Currency и форматирует текстовые данные полностью прописными буквами. Функция вызывается из события OnLostFocus несвязанного элемента управления TaxRefund.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

TextBox.Format property (Access)

Use the Format property to customize the way numbers, dates, times, and text are displayed and printed. Read/write String.

Syntax

expression.Format

expression A variable that represents a TextBox object.

Use one of the predefined formats, or you can create a custom format by using formatting symbols.

The Format property uses different settings for different data types. For information about settings for a specific data type, see one of the following topics:

In Visual Basic, enter a string expression that corresponds to one of the predefined formats, or enter a custom format.

The Format property affects only how data is displayed. It doesn’t affect how data is stored.

Microsoft Access provides predefined formats for Date/Time, Number and Currency, Text and Memo, and Yes/No data types. The predefined formats depend on the country/region specified by double-clicking Regional Options in the Windows Control Panel. Access displays formats appropriate for the country/region selected. For example, with English (United States) selected on the General tab, 1234.56 in the Currency format appears as $1,234.56, but when English (British) is selected on the General tab, the number appears as 1,234.56.

If you set a field’s Format property in table Design view, Access uses that format to display data in datasheets. It also applies the field’s Format property to new controls on forms and reports.

Use the following symbols in custom formats for any data type.

Symbol Meaning
(space) Display spaces as literal characters.
«ABC» Display anything inside quotation marks as literal characters.
! Force left alignment instead of right alignment.
* Fill available space with the next character.
Display the next character as a literal character. You can also display literal characters by placing quotation marks around them.
[ color ] Display the formatted data in the color specified between the brackets. Available colors: Black, Blue, Green, Cyan, Red, Magenta, Yellow, White.

You can’t mix custom formatting symbols for the Number and Currency data types with Date/Time, Yes/No, or Text and Memo formatting symbols.

When you have defined an input mask and set the Format property for the same data, the Format property takes precedence when the data is displayed and the input mask is ignored. For example, if you create a Password input mask in table Design view and also set the Format property for the same field, either in the table or in a control on a form, the Password input mask is ignored and the data is displayed according to the Format property.

Example

The following three examples set the Format property by using a predefined format.

The following example sets the Format property by using a custom format. This format displays a date as Jan 2018.

The following example demonstrates a Visual Basic function that formats numeric data by using the Currency format and formats text data entirely in capital letters. The function is called from the OnLostFocus event of an unbound control named TaxRefund.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

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:

Источник

How to Format VBA TextBox To Long Date

I have a textbox for date display which shows the date in this format: 17/04/2012 but I would like to format it to shows up like ‘April 17, 2012’. I tried this code

which I am getting syntax error from compiler.Can you please let me know how I can do it? Thanks

1 Answer 1

there have been couple of posts on this. Culprit seems to be your system date format. Use of short, medium, long formats will change the result when the system settings change.

  • In US systems mainly it’s done as, e.g. Format$(yourdate, “dd/mm/yyyy”)
  • Where as European systems, e.g. Format$(yourdate, “short date”)

If we look at explicitly defining your format, you are formulating your regional settings!

Good e.g. short date won’t always be mm/dd/yyyy but could be dd/mm/yyyy. That’s the key advantage over actually specifying the format. Simply you can change how you want your date to look like instead of depending on the system (with or without your knowledge).

When we first encountered this, we had some making the VBA apps and sending it over to another in some other place where they have own localized system date format. Your phone rings. 😉

  • Short/Long Date: Display a date according to your system’s long date format.
  • Medium Date: Display a date using the medium date format appropriate for the language version of the host application.

Источник

Содержание

  1. TextBox.Format property (Access)
  2. Syntax
  3. Remarks
  4. Example
  5. Support and feedback
  6. VBA Excel. Элемент управления TextBox (текстовое поле)
  7. Элемент управления TextBox
  8. Свойства текстового поля
  9. Привязка текстового поля к ячейке
  10. Change format of VBA userform textbox data
  11. tjdickinson
  12. Excel Facts
  13. fadee2
  14. tjdickinson
  15. How to Format VBA TextBox To Long Date
  16. 1 Answer 1
  17. Formatting MM/DD/YYYY dates in textbox in VBA
  18. 9 Answers 9

TextBox.Format property (Access)

Use the Format property to customize the way numbers, dates, times, and text are displayed and printed. Read/write String.

Syntax

expression.Format

expression A variable that represents a TextBox object.

Use one of the predefined formats, or you can create a custom format by using formatting symbols.

The Format property uses different settings for different data types. For information about settings for a specific data type, see one of the following topics:

In Visual Basic, enter a string expression that corresponds to one of the predefined formats, or enter a custom format.

The Format property affects only how data is displayed. It doesn’t affect how data is stored.

Microsoft Access provides predefined formats for Date/Time, Number and Currency, Text and Memo, and Yes/No data types. The predefined formats depend on the country/region specified by double-clicking Regional Options in the Windows Control Panel. Access displays formats appropriate for the country/region selected. For example, with English (United States) selected on the General tab, 1234.56 in the Currency format appears as $1,234.56, but when English (British) is selected on the General tab, the number appears as 1,234.56.

If you set a field’s Format property in table Design view, Access uses that format to display data in datasheets. It also applies the field’s Format property to new controls on forms and reports.

Use the following symbols in custom formats for any data type.

Symbol Meaning
(space) Display spaces as literal characters.
«ABC» Display anything inside quotation marks as literal characters.
! Force left alignment instead of right alignment.
* Fill available space with the next character.
Display the next character as a literal character. You can also display literal characters by placing quotation marks around them.
[ color ] Display the formatted data in the color specified between the brackets. Available colors: Black, Blue, Green, Cyan, Red, Magenta, Yellow, White.

You can’t mix custom formatting symbols for the Number and Currency data types with Date/Time, Yes/No, or Text and Memo formatting symbols.

When you have defined an input mask and set the Format property for the same data, the Format property takes precedence when the data is displayed and the input mask is ignored. For example, if you create a Password input mask in table Design view and also set the Format property for the same field, either in the table or in a control on a form, the Password input mask is ignored and the data is displayed according to the Format property.

Example

The following three examples set the Format property by using a predefined format.

The following example sets the Format property by using a custom format. This format displays a date as Jan 2018.

The following example demonstrates a Visual Basic function that formats numeric data by using the Currency format and formats text data entirely in capital letters. The function is called from the OnLostFocus event of an unbound control named TaxRefund.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

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:

Источник

Change format of VBA userform textbox data

tjdickinson

Board Regular

I have a userform with 5 input fields, four of which are textboxes (the other is a combobox). Two of the fields ask the user to input a date in the format dd/mm/yy, and one of them asks for a number.

Currently, these values are added to the worksheet as text values, even though the cells are formatted as dates/numbers. (Thus it also flags that the input data doesn’t correspond to the cell formatting).

I would like the dates to retain the day, month, and year data, but to only show dd/mm in the cell.
I would like the number to display as a number (allowing for decimals and zero).

Here’s the code that adds the form data to the worksheet:

Excel Facts

fadee2

Active Member

In VBA textbox values (excluding numbers only) are considered as TEXT and when we populate cells with textbox values, they are transferred as text as well. Same goes for dates, thus formatting cells as Date does not have any effect. have a look at below examples:

Textbox1.value will place your value as text and as a result number format will not have any effect on such value.
format(textbox1.value, «mm/yyyy») will place your value as text but formatted in shape of month and year, but excel will read the cell value as text.
CDate(textbox1.value) will place your value as date and numberformat will change the date format, but the value will remain date.

tjdickinson

Board Regular

In VBA textbox values (excluding numbers only) are considered as TEXT and when we populate cells with textbox values, they are transferred as text as well. Same goes for dates, thus formatting cells as Date does not have any effect. have a look at below examples:

Textbox1.value will place your value as text and as a result number format will not have any effect on such value.
format(textbox1.value, «mm/yyyy») will place your value as text but formatted in shape of month and year, but excel will read the cell value as text.
CDate(textbox1.value) will place your value as date and numberformat will change the date format, but the value will remain date.

Hi, Fahad, thanks for your reply!

Okay, so I changed the code to include the CDate() function:

When I run the form and fill it in, I put (for example) 26/06 in the first date box and 27/06 in the second date box.

After I click ‘Add’, the cells receive the values
26/06/2021
27/06/2021
even though I didn’t put the year in the form. I would like the year not to display in order to minimise column width.

The Cell Number Format now says ‘Text’ instead of ‘Date’ (it was set to ‘Date’ with custom formatting dd/mm before I added the data). However, the flag in the corner of the cell has gone away, which had been indicating that the cell contents didn’t fit the intended format. So I’m not quite sure what’s going on there.

I don’t quite understand how to use the NumberFormat parameter. I can’t call a specific cell, because each instance of the userform adds a new column of data (so the reference is constantly changing). Is there something similar to CDate() for numbers?

Источник

How to Format VBA TextBox To Long Date

I have a textbox for date display which shows the date in this format: 17/04/2012 but I would like to format it to shows up like ‘April 17, 2012’. I tried this code

which I am getting syntax error from compiler.Can you please let me know how I can do it? Thanks

1 Answer 1

there have been couple of posts on this. Culprit seems to be your system date format. Use of short, medium, long formats will change the result when the system settings change.

  • In US systems mainly it’s done as, e.g. Format$(yourdate, “dd/mm/yyyy”)
  • Where as European systems, e.g. Format$(yourdate, “short date”)

If we look at explicitly defining your format, you are formulating your regional settings!

Good e.g. short date won’t always be mm/dd/yyyy but could be dd/mm/yyyy. That’s the key advantage over actually specifying the format. Simply you can change how you want your date to look like instead of depending on the system (with or without your knowledge).

When we first encountered this, we had some making the VBA apps and sending it over to another in some other place where they have own localized system date format. Your phone rings. 😉

  • Short/Long Date: Display a date according to your system’s long date format.
  • Medium Date: Display a date using the medium date format appropriate for the language version of the host application.

Источник

Formatting MM/DD/YYYY dates in textbox in VBA

I’m looking for a way to automatically format the date in a VBA text box to a MM/DD/YYYY format, and I want it to format as the user is typing it in. For instance, once the user types in the second number, the program will automatically type in a «/». Now, I got this working (as well as the second dash) with the following code:

Now, this works great when typing. However, when trying to delete, it still enters in the dashes, so its impossible for the user to delete past one of the dashes (deleting a dash results in a length of 2 or 5, and the sub is then run again, adding in another dash). Any suggestions on a better way to do this?

9 Answers 9

I never suggest using Textboxes or Inputboxes to accept dates. So many things can go wrong. I cannot even suggest using the Calendar Control or the Date Picker as for that you need to register the mscal.ocx or mscomct2.ocx and that is very painful as they are not freely distributable files.

Here is what I recommend. You can use this custom made calendar to accept dates from the user

PROS:

  1. You don’t have to worry about user inputting wrong info
  2. You don’t have to worry user pasting in the textbox
  3. You don’t have to worry about writing any major code
  4. Attractive GUI
  5. Can be easily incorporated in your application
  6. Doesn’t use any controls for which you need to reference any libraries like mscal.ocx or mscomct2.ocx

CONS:

Ummm. Ummm. Can’t think of any.

HOW TO USE IT (File missing from my dropbox. Please refer to the bottom of the post for an upgraded version of the calendar)

  1. Download the Userform1.frm and Userform1.frx from here.
  2. In your VBA, simply import Userform1.frm as shown in the image below.

Importing the form

RUNNING IT

You can call it in any procedure. For example

SCREEN SHOTS IN ACTION

NOTE: You may also want to see Taking Calendar to new level

This is the same concept as Siddharth Rout’s answer. But I wanted a date picker which could be fully customized so that the look and feel could be tailored to whatever project it’s being used in.

You can click this link to download the custom date picker I came up with. Below are some screenshots of the form in action.

To use the date picker, simply import the CalendarForm.frm file into your VBA project. Each of the calendars above can be obtained with one single function call. The result just depends on the arguments you use (all of which are optional), so you can customize it as much or as little as you want.

For example, the most basic calendar on the left can be obtained by the following line of code:

That’s all there is to it. From there, you just include whichever arguments you want to get the calendar you want. The function call below will generate the green calendar on the right:

Here is a small taste of some of the features it includes. All options are fully documented in the userform module itself:

  • Ease of use. The userform is completely self-contained, and can be imported into any VBA project and used without much, if any additional coding.
  • Simple, attractive design.
  • Fully customizable functionality, size, and color scheme
  • Limit user selection to a specific date range
  • Choose any day for the first day of the week
  • Include week numbers, and support for ISO standard
  • Clicking the month or year label in the header reveals selectable comboboxes
  • Dates change color when you mouse over them

Add something to track the length and allow you to do «checks» on whether the user is adding or subtracting text. This is currently untested but something similar to this should work (especially if you have a userform).

I too, one way or another stumbled on the same dilemma, why the heck Excel VBA doesn’t have a Date Picker . Thanks to Sid, who made an awesome job to create something for all of us.

Nonetheless, I came to a point where I need to create my own. And I am posting it here since a lot of people I’m sure lands on this post and benefit from it.

What I did was very simple as what Sid does except that I do not use a temporary worksheet. I thought the calculations are very simple and straight forward so there’s no need to dump it somewhere else. Here’s the final output of the calendar:

How to set it up:

  • Create 42 Label controls and name it sequentially and arranged left to right, top to bottom (This labels contains greyed 25 up to greyed 5 above). Change the name of the Label controls to Label_01,Label_02 and so on. Set all 42 labels Tag property to dts .
  • Create 7 more Label controls for the header (this will contain Su,Mo,Tu. )
  • Create 2 more Label control, one for the horizontal line (height set to 1) and one for the Month and Year display. Name the Label used for displaying month and year Label_MthYr
  • Insert 2 Image controls, one to contain the left icon to scroll previous months and one to scroll next month (I prefer simple left and right arrow head icon). Name it Image_Left and Image_Right

The layout should be more or less like this (I leave the creativity to anyone who’ll use this).

Declaration:
We need one variable declared at the very top to hold the current month selected.

Private Procedure and Functions:

Image Events:

I added this to make it look like the user is clicking the label and should be done on the Image_Right control too.

Label Events:
All of this should be done for all 42 labels ( Label_01 to Lable_42 )
Tip: Build the first 10 and just use find and replace for the remaining.

This is for hovering over dates and clicking effect.

UserForm Events:

Again, just for the hovering over dates effect.

And that’s it. This is raw and you can add your own twist to it.
I’ve been using this for awhile and I have no issues (performance and functionality wise).
No Error Handling yet but can be easily managed I guess.
Actually, without the effects, the code is too short.
You can manage where your dates go in the select_label procedure. HTH.

Источник

Excel VBA Tutorial 5 - Text Box Properties, Text Box Currency Format and Date Format

In Excel VBA tutorial 4 we learned how to add different tools to the user form. In today’s tutorials, we will learn about the properties of text boxes. We will learn about different formats of text boxes.

About User Form Properties In Tutorial 3, we saw some important points. In the same way every tool has its properties. Some tabs are more or less according to the tool.

Excel VBA Tutorial 5 - Text Box Properties, Text Box Currency Format and Date Format

1. Name – Any name can be given to the text box.

2. Text box Size – Option of drag and drop with the mouse is better to increase the size or more.

3. Control Tip Text – When the application is run, you have to type the text in the control tip text to show a text tip as soon as the mouse cursor is moved over the text box.

Excel VBA Tutorial 5 - Text Box Properties, Text Box Currency Format and Date Format

4. Enable – Many times the project has to show the text in the text box, but to ban it from editing, Select False Option in the option of enable, no user can edit the text of the text box.

5. Visible – To hide the text box, the text box will be hidden as soon as it is false in front of the Visible option.

6. Text – To show any text by default in the text box, you can type the words type in front of the text option.

7. With the option of Text Align, Back Color, Border Color, you can change the design of the text box.

8. Password Character – Type one of the special characters in the password char to show the text * or # or @ of the text box as such.

For example – When typing a text box password, all we need to do is to show * star *, type password Char  *  .

Excel VBA Tutorial 5 - Text Box Properties, Text Box Currency Format and Date Format

How to change the text box format?

1. Text box currency format

To change the text box Value to currency format, double click on the text box or right click to view code.

Private Sub TextBox1_Change() 

End Sub

The text box name and change will appear. That means, while making any change in the text box, we can give the command in it. You can see multiple options in the drop down option by clicking above the change option above. We will be able to make any changes according to the behavior of the text box. We have to type the code of the format in the line below Private Sub TextBox1_Change ().

Excel VBA Tutorial 5 - Text Box Properties, Text Box Currency Format and Date Format

Private Sub TextBox1_Change()

Me.TextBox1.Text = Format(Me.TextBox1, “####,##”)

End Sub

Now run the project by pressing F5. And type any number in the text box. The value will be converted to currency format only while typing.

If you need a decimal number in the currency format, then click on the text Behavior After Update

Me.TextBox1.Text = Format (Me.TextBox1, “####, ##. 00”) Apply this code.

Private Sub TextBox1_AfterUpdate()

Me.TextBox1.Text = Format(Me.TextBox1, “####,##”)

End Sub

2. Text Box Date Format –

To convert a value to a date format, double-click on the text box and select Text Behavior After Update. And apply the format code below.


Private Sub TextBox2_AfterUpdate ()

Me.TextBox2.Text = Format (Me.TextBox2, “dd / mm / yyyy”)

End Sub

Excel VBA Tutorial 5 - Text Box Properties, Text Box Currency Format and Date Format

You can use dashes or slashes in the date format or you can use a different format.

dd-mm-yyyy

dd/mmm/yyyy

mmm/dd/yyyy

Similarly, you can apply any format in the text box.

Me. TextBox .Text = Format (TextBox, “Format”)

Понравилась статья? Поделить с друзьями:
  • Excel vba text color
  • Excel vba workbook open method
  • Excel vba workbook names
  • Excel vba text and value
  • Excel vba workbook methods