I have a form with a number of text boxes for user input (this is in a User Form not on the spreadsheet). I have a few boxes that are related to currency and I need them to show the comma and decimal point as the user enters their criteria into the box. So far I have found a bunch of the same formulas online but when I input my number into the box it goes with 4.00 (if i hit 4 first) and all i can change after that is the second 0. Here is something similar I see online:
textbox1 = format(textbox1, "$#,##0.00")
Also seen some with cDbl
No matter what I try it won’t let me enter anything more than the first number I enter. I need help. Thanks!
asked May 12, 2011 at 15:21
1
Formatting as the user types in data gets very tricky. May be better to format after the entry is complete.
Entry can also be validated and old value restored if entry deemed invalid
Dim TextBox1oldValue As String
Private Sub TextBox1_AfterUpdate()
If IsNumeric(TextBox1) Then
TextBox1 = Format(TextBox1, "$#,##0.00")
Else
TextBox1 = TextBox1oldValue
End If
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1) Then
TextBox1oldValue = Format(TextBox1, "$#,##0.00")
End If
End Sub
Private Sub UserForm_Initialize()
TextBox1oldValue = "$0.00"
TextBox1 = "$0.00"
End Sub
answered May 13, 2011 at 2:01
chris neilsenchris neilsen
52.2k10 gold badges84 silver badges122 bronze badges
1
You need to use the TextBox Change event, like:
Private Sub TextBox1_Change()
If TextBox1 = vbNullString Then Exit Sub
If IsNumeric(TextBox1) Then CurrencyTransform(TextBox1)
End Sub
You then create the CurrencyTransform function to modify what it shows in the TextBox.
answered May 12, 2011 at 15:59
Lance RobertsLance Roberts
22.2k32 gold badges112 silver badges129 bronze badges
Try simply this…
Private sub textbox1_AfterUpdate()
textbox1 = format(textbox1, "$#,##0.00")
end sub
answered Oct 25, 2013 at 3:09
I wrote this inspired by chris’ solution. It works while user is typing!
Private waiting As Boolean
Private Sub TextBox1_Change()
If waiting Then Exit Sub
waiting = True
TextBox1 = formatAsCurrency(TextBox1)
waiting = False
End Sub
Private Function formatAsCurrency(v As String)
If v = "" Then
formatAsCurrency = Format(0, "0.00")
Else
Dim vv As Variant
vv = Replace(v, ",", "")
vv = Replace(vv, ".", "")
formatAsCurrency = Format(vv / 100, "#,##0.00")
End If
End Function
answered Sep 12, 2022 at 17:01
Try this:
Private Sub TextBox1_Change()
TextBox1.Value = Format(TextBox1.Value, "$#,##0.00")
End Sub
This worked for me just fine, so it should help you as well.
If you want to do calculations that involve multiple text boxes, don’t use .value
after the name of the text box. Instead, use val(
before the name of the text box while following it with an end parenthesis. I used .value
and got weird results. Instead of, for example, $100 for TextBox1.Value + TextBox2.Value
where TextBox1.Value
is equal to $25 and TextBox2.Value
is equal to $75, I would get «$25$75».
answered Apr 12, 2015 at 22:53
JacobJacob
11 bronze badge
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.
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.
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 * .
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 ().
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
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 нет встроенной функции, позволяющей изменить формат текста в текстовом поле (элемент управления ActiveX). Однако, если вам нужно отформатировать числа, которые вы для какой-то цели ввели в текстовое поле, в валюту. Как вы можете этого добиться? Эта статья покажет вам метод VBA для решения этой проблемы.
Отформатируйте текстовое поле как валюту с кодом VBA
Отформатируйте текстовое поле как валюту с кодом VBA
Приведенный ниже код VBA может помочь вам легко форматировать числа в текстовом поле в качестве валюты в Excel. Пожалуйста, сделайте следующее.
1. Нажмите Застройщик > Вставить > Текстовое поле (элемент управления ActiveX) чтобы вставить текстовое поле в рабочий лист. Смотрите скриншот:
2. Щелкните текстовое поле правой кнопкой мыши, затем щелкните Просмотреть код из контекстного меню.
3. В дебюте Microsoft Visual Basic для приложений В окне кода замените исходный код в окне кода приведенным ниже кодом VBA.
Код VBA: форматирование текстового поля как валюты в Excel
Private Sub TextBox1_Change()
TextBox1.Value = Format(TextBox1.Value, "$###,##")
End Sub
Внимание: В коде TextBox1 — это имя текстового поля, внутри которого вы будете форматировать числа как валюту. Пожалуйста, измените его на свой собственный.
4. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.
5. Выключите режим дизайна.
С этого момента при вводе числа в текстовое поле оно будет автоматически форматироваться как валюта, как показано на скриншоте ниже.
Статьи по теме:
- Как автоматически выбрать текст текстового поля, когда он выбран в Excel?
- Как автозаполнить текстовое поле при вводе в Excel?
- Как отформатировать текстовое поле в процентах в Excel?
- Как объединить тексты из нескольких ячеек в текстовое поле в Excel?
- Как отключить редактирование в текстовом поле, чтобы пользователь не вводил данные в Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (0)
Оценок пока нет. Оцените первым!
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
1 |
|
27.06.2011, 06:36. Показов 11539. Ответов 22
Плиииззз, подскажите пожалуйста как при вводе в TextBox можно было вводить только числа, и если пользователь вводит точку то она автоматически менялась на запятую. И допустим мы вводим 1923000 то это число автоматически выглядело бы как 1 923 000,00 (Как в Excel денежный формат) Миниатюры
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
27.06.2011, 06:36 |
Ответы с готовыми решениями: Формат в Textbox (000.00) Не могу заставить в Textbox1 водиться только… Денежный формат денежный формат Денежный формат Подскажите, пожалуйста, как в отчете отобразить суммы в миллионах рублей? Что-то… 22 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||
27.06.2011, 09:04 |
2 |
|||
Устроит?
0 |
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
27.06.2011, 10:53 [ТС] |
3 |
Че то не работает, есть FormatCurrency но не могу применить((((
0 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||
27.06.2011, 11:04 |
4 |
|||
Сорри
1 |
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
27.06.2011, 13:10 [ТС] |
5 |
Вот сейчас работает)))))Спасибо Добавлено через 12 минут
0 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||
27.06.2011, 13:50 |
6 |
|||
GRURUS, и с ним нельзя не согласиться, не так ли?
, тогда никаких обработок, в противном случае — валяй.
0 |
GRURUS 9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
||||
27.06.2011, 13:58 [ТС] |
7 |
|||
И еще как можно собрать твой код для перевода в денежный вариант со следующи кодом
0 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||
27.06.2011, 14:20 |
8 |
|||
Страшно даже помыслить, чтобы это все применялось при вводе текста.
А то что ты там изобрел — это атомная бомба.
2 |
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
28.06.2011, 09:02 [ТС] |
9 |
Все гут, но есть одно но…ввожу 4568 переводится в 4 568,00р. а когда надо посчитать по берется не 4568 а 4
0 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||
28.06.2011, 09:08 |
10 |
|||
Как посчитать? Пример? Добавлено через 3 минуты
По моему работает неплохо
0 |
GRURUS 9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
||||
28.06.2011, 10:00 [ТС] |
11 |
|||
х.з этот примр работает,а у меня округляет Добавлено через 12 минут
0 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||||||
28.06.2011, 10:55 |
12 |
|||||||
Ты тут не напутал? Это во втором текстбоксе, приравнивание к первому — это так задумано?
0 |
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
28.06.2011, 11:13 [ТС] |
13 |
ну да косячек((( Добавлено через 8 минут
0 |
Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
|
28.06.2011, 11:15 |
14 |
если после зяпятой нули то их отбрасывать Где? Не понял
0 |
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
28.06.2011, 11:20 [ТС] |
15 |
допустим получается число 6 000,00р. при выводе результата в textbox 6 000р.
0 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||||||
28.06.2011, 11:24 |
16 |
|||||||
GRURUS, Ты вроде так боролся за копейки, теперь тебе их не надо?
На
0 |
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
28.06.2011, 11:28 [ТС] |
17 |
в чем фишка если 6 000, 56р. то выводим 6 000,56р, а если 6 000,00р, то выводим 6 000
0 |
Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
|
28.06.2011, 11:30 |
18 |
GRURUS, см. выше, как раз то что надо
0 |
9 / 9 / 4 Регистрация: 27.06.2011 Сообщений: 295 |
|
28.06.2011, 11:33 [ТС] |
19 |
это я понимаю, но я же незнаю изначально какой у меня результат будет
0 |
Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
|
28.06.2011, 11:49 |
20 |
GRURUS, разбирайся давай пробуй, все выложено. А то я уже тебя понимать перестал
0 |
evgmaz Пользователь Сообщений: 37 |
Есть числовое значение в TextBox (оно может быть как целым (Long), так и с плавающей запятой). |
ikki Пользователь Сообщений: 9709 |
функция Format() фрилансер Excel, VBA — контакты в профиле |
evgmaz Пользователь Сообщений: 37 |
В нем использовал предопределенный формат Standard, но он дает только 2 цифры после запятой, а мне нужны все! |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Запишите рекордером нужно е форматирование ячейки и посмотрите получившийся код. Используйте аналогичный для ТекстБокса. |
ikki Пользователь Сообщений: 9709 |
#5 28.04.2013 03:03:45 был один вопрос
где здесь сказано про количество знаков после запятой? так что надо-то на самом деле? фрилансер Excel, VBA — контакты в профиле |
||
evgmaz Пользователь Сообщений: 37 |
#6 28.04.2013 05:06:02
Спасибо за совет! Попробуем! |
||
evgmaz Пользователь Сообщений: 37 |
воспользовался советом от Юрия М, но вот такой код в процедуре TextBox1_KeyPress: If KeyAscii >= 48 And KeyAscii <= 57 Then дает в итоге неправильный формат, типа 1 234 5678 (т.е. делит не по 3 разряда, а в конце оставляет 4). Не пойму то ли ошибка в использовании ф-ии Format, то ли не корректность ее использования в процедуре KeyPress (и надо поискать другую процедуру)?! |
ikki Пользователь Сообщений: 9709 |
#8 28.04.2013 14:27:38 в окне immediate:
а что там у вас в переменной st — нам, извините, не видно фрилансер Excel, VBA — контакты в профиле |
||
evgmaz Пользователь Сообщений: 37 |
#9 28.04.2013 14:41:06
Подозрение у вас правильное, в процедуре KeyPress в переменную st попадает число до нажатия клавиши, а не после, поэтому форматирование неверное. Если сделал процедуру Change, типа то все заработало верно…..Но какой-то осадок остался, кажется все можно достойно решить в рамках одной процедуры KeyPress, просто я увы не до конца понимаю «график» ее работы. |
||
ikki Пользователь Сообщений: 9709 |
имхо, правильнее именно разделить эти две задачи — недопущение нажатия неправильной клавиши и форматирование. не стоит пихать всё в один обработчик, создавая себе трудности и запутывая код. фрилансер Excel, VBA — контакты в профиле |
evgmaz Пользователь Сообщений: 37 |
Спасибо, всегда приятно, что свои мысли (подходы) одобряются профессионалами |
evgmaz Пользователь Сообщений: 37 |
И все таки продолжу: Проблема с плавающей запятой. Ввожу: 12345.6789 Запись «#,##0.##» проверял с NumberFormat применительно к ячейкам, то все работает ок! |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#13 28.04.2013 19:52:13
Неправильно полагаете — должно получиться 12 345,68.
Наверное, Вы забываете, что событие Change возникает после ввода КАЖДОГО символа.
|
||||||
evgmaz Пользователь Сообщений: 37 |
#14 29.04.2013 00:17:08
st можно не вводить (это не принципиально!). Согласен. С Exit конечно все работает, то хочется чтобы форматировалось во время набора, а не после выхода из TextBox….. Продолжаю осмысливать идеи….но пока нет результата! Изменено: evgmaz — 10.05.2013 00:07:08 |
||
ikki Пользователь Сообщений: 9709 |
предлагаю попробовать так: Изменено: ikki — 29.04.2013 00:46:42 фрилансер Excel, VBA — контакты в профиле |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#16 29.04.2013 00:41:57
В TextBox ВСЕГДА текст, вне зависимости от того, вводите Вы точку или запятую. |
||
evgmaz Пользователь Сообщений: 37 |
Совершенно верно, в TextBox всегда текст (это хорошо известно), но вот когда данные из TextBox я копирую в ячейку Листа, то Exel воспринимает текст с точкой как число, а текст с запятой как текст. |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Так и передавайте его в ЯЧЕЙКУ числом: [A1] = CDbl(Me.TextBox1) |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#19 29.04.2013 02:32:05
Не согласен: это VBA воспринимает точку, как разделитель. А вот Excel как раз наоборот. Попробуйте ввести в ячейку 12345.6789 |
||
evgmaz Пользователь Сообщений: 37 |
#20 29.04.2013 02:34:51
Попробую ваш вариант, но вот что настораживает: А ДЛЯ ДЕЙСТВИТЕЛЬНОГО ЧИСЛА (когда запятая есть) вариант с процедурой Change и кодом |
||
evgmaz Пользователь Сообщений: 37 |
Юрий М, ну, Вы только подтверждаете сказанное….Это 12345.6789 — Exel воспринимает как текст, а если 12345.6789 находится в TextBox, то Cells(1,1) =TextBox.value получится нормальное хорошее число 12345,6789 Короче ни с запятой ни с точкой пока нет результата! Изменено: evgmaz — 10.05.2013 00:08:25 |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#22 29.04.2013 02:52:43
Правильно — «вмешивается» VBA. И вообще не пойму — зачем форматировать именно в TextBox? Что Вам даст там наличие пробела между разрядами? Форматируйте уже при присвоении значения ячейке. Не вижу вообще проблемы: как писал выше — cdbl нормально справляется. А вот менять точку на запятую можно и при вводе. |
||
evgmaz Пользователь Сообщений: 37 |
#23 29.04.2013 03:29:27
Ответы: |
||
- Remove From My Forums
-
Question
-
I want a simple textbox that automatically formats itself for money with this format 0.00
first digit: i can put on it any number of digits like this: 1324654879.00
second and third digits after the decimal put on them only 2 digit like this: 2136459874.12
Answers
-
-
Edited by
Wednesday, June 1, 2011 3:39 PM
Additional Information… -
Proposed as answer by
Mike Feng
Friday, June 3, 2011 3:49 AM -
Marked as answer by
Mike Feng
Tuesday, June 21, 2011 9:25 AM
-
Edited by
-
Have a look at this and let me know if you don’t understand what I have here or how it works:
Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave ' This is the "leave" event of the textbox. Don't try to figure out what they might ' be typing - let them finish typing it, then look to try to format it if it's a ' legit number. Dim userEntry As Decimal = 0 If Not Decimal.TryParse(TextBox1.Text, userEntry) Then MessageBox.Show("You must type a number in this textbox.", _ "Illegal Characters", _ MessageBoxButtons.OK, MessageBoxIcon.Warning) TextBox1.Focus() TextBox1.SelectAll() Else TextBox1.Text = userEntry.ToString("C") End If End Sub
I hope it helps.
-
Proposed as answer by
Mike Feng
Friday, June 3, 2011 3:50 AM -
Marked as answer by
Mike Feng
Tuesday, June 21, 2011 9:26 AM
-
Proposed as answer by
-
For that is not the textbox but the maskedtextbox
Success
Cor-
Marked as answer by
Mike Feng
Tuesday, June 21, 2011 9:26 AM
-
Marked as answer by
Формат значений числовой и денежный |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Содержание
- Свойство TextBox.Format (Access)
- Синтаксис
- Замечания
- Пример
- Поддержка и обратная связь
- TextBox.Format property (Access)
- Syntax
- Remarks
- Example
- Support and feedback
- VBA Excel. Элемент управления TextBox (текстовое поле)
- Элемент управления TextBox
- Свойства текстового поля
- Привязка текстового поля к ячейке
- How to Format VBA TextBox To Long Date
- 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.
Источник
Преобразование чисел, дат и строк в настраиваемый текстовый формат из кода VBA Excel с помощью функции Format. Синтаксис, параметры, символы, примеры.
Format – это функция, которая преобразует число, дату или строку в текст, отформатированный в соответствии с именованным выражением формата или инструкциями, составленными из специальных символов.
Синтаксис и параметры
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear])
- Expression – любое допустимое выражение (переменная), возвращающее числовое значение или строку (обязательный параметр).
- FormatExpression – выражение формата, именованное или содержащее инструкции из специальных символов (необязательный параметр).
- FirstDayOfWeek – константа, задающая первый день недели (необязательный параметр).
- FirstWeekOfYear – константа, задающая первую неделю года (необязательный параметр).
Именованные выражения форматов
Именные форматы даты и времени
Имя формата | Описание |
---|---|
General Date | Стандартное отображение даты и времени в соответствии с параметрами системы. |
Long Date | Длинный формат даты. |
Medium Date | Средний формат даты. |
Short Date | Краткий формат даты. |
Long Time | Длинный формат времени. |
Medium Time | Средний формат времени. |
Short Time | Краткий формат времени. |
Проверьте отображение даты и времени с использованием именованных форматов на вашем компьютере при помощи следующего кода VBA Excel:
Sub FormatDateTime() MsgBox «General Date: « & Format(Now, «General Date») & vbNewLine _ & vbNewLine & «Long Date: « & Format(Now, «Long Date») & vbNewLine _ & vbNewLine & «Medium Date: « & Format(Now, «Medium Date») & vbNewLine _ & vbNewLine & «Short Date: « & Format(Now, «Short Date») & vbNewLine _ & vbNewLine & «Long Time: « & Format(Now, «Long Time») & vbNewLine _ & vbNewLine & «Medium Time: « & Format(Now, «Medium Time») & vbNewLine _ & vbNewLine & «Short Time: « & Format(Now, «Short Time») End Sub |
Скорее всего, результат будет таким:
Именованные форматы чисел
Имя формата | Описание |
---|---|
General Number | Стандартное отображение числа без знака разделителя групп разрядов. |
Currency | Денежный формат. |
Fixed | Отображение числа без знака разделителя групп разрядов с двумя цифрами после разделителя целой и дробной части. |
Standard | Отображение числа со знаком разделителя групп разрядов и с двумя цифрами после разделителя целой и дробной части. |
Percent | Процентный формат: отображение числа, умноженного на 100, со знаком процента (%), добавленного справа. |
Scientific | Отображение числа в экспоненциальном виде. |
Yes/No | Возвращается «Нет», если число равно 0, иначе отображается «Да». |
True/False | Возвращается «Ложь», если число равно 0, иначе отображается «Истина». |
On/Off | Возвращается «Выкл», если число равно 0, иначе отображается «Вкл». |
Проверяем работу именованных форматов на числах 2641387.7381962 и 0 с помощью кода VBA Excel:
Sub FormatNumber() Dim n As Double n = 2641387.7381962 ‘n = 0 MsgBox «Форматируемое число = « & n & vbNewLine _ & vbNewLine & «General Number: « & Format(n, «General Number») & vbNewLine _ & vbNewLine & «Currency: « & Format(n, «Currency») & vbNewLine _ & vbNewLine & «Fixed: « & Format(n, «Fixed») & vbNewLine _ & vbNewLine & «Standard: « & Format(n, «Standard») & vbNewLine _ & vbNewLine & «Percent: « & Format(n, «Percent») & vbNewLine _ & vbNewLine & «Scientific: « & Format(n, «Scientific») & vbNewLine _ & vbNewLine & «Yes/No: « & Format(n, «Yes/No») & vbNewLine _ & vbNewLine & «True/False: « & Format(n, «True/False») & vbNewLine _ & vbNewLine & «On/Off: « & Format(n, «On/Off») End Sub |
Получаем следующий результат:
Вместо вопросительного знака в отображении числа в формате Currency, по идее, должен быть знак валюты (₽ или руб.).
Специальные символы для выражений форматов
Символы для форматов даты и времени
Символ | Описание |
---|---|
Точка (.) | Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца в виде числа. |
Пробел | Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца прописью. |
Двоеточие (:) | Разделитель компонентов времени (часы, минуты, секунды). |
d | День в виде числа без нуля в начале (1–31). |
dd | День в виде числа с нулем в начале (01–31). |
m | Месяц в виде числа без нуля в начале (1–12). Если (m) следует после (h) или (hh), отображаются минуты (0–59). |
mm | Месяц в виде числа с нулем в начале (01–12). Если (mm) следует после (h) или (hh), отображаются минуты (00–59). |
mmm | Месяц прописью в сокращенном виде (янв–дек). |
mmmm | Полное название месяца (январь–декабрь). |
y | День года в виде числа (1–366). |
yy | Год в виде 2-значного числа (00–99). |
yyyy | Год в виде 4-значного числа (1900–9999). |
h | Часы в виде числа без нуля в начале (0–23). |
hh | Часы в виде числа с нулем в начале (00–23). |
n (m) | Минуты в виде числа без нуля в начале (0–59). |
nn (mm) | Минуты в виде числа с нулем в начале (00–59). |
s | Секунды в виде числа без нуля в начале (0–59). |
ss | Секунды в виде числа с нулем в начале (00–59). |
В этой таблице перечислены далеко не все символы для выражений форматов даты и времени. Вы можете ознакомиться со всеми символами, в том числе и для форматирования чисел, на сайте разработчика.
Примеры отображения даты с помощью разных по количеству наборов символа d:
Sub DataIsD() MsgBox «d: « & Format(Now, «d») & vbNewLine _ & vbNewLine & «dd: « & Format(Now, «dd») & vbNewLine _ & vbNewLine & «ddd: « & Format(Now, «ddd») & vbNewLine _ & vbNewLine & «dddd: « & Format(Now, «dddd») & vbNewLine _ & vbNewLine & «ddddd: « & Format(Now, «ddddd») & vbNewLine _ & vbNewLine & «dddddd: « & Format(Now, «dddddd») End Sub |
Символы для числовых форматов
Символ | Описание |
---|---|
Точка (.) | Десятичный разделитель. |
Запятая (,) | Разделитель групп разрядов. В отображаемых числах заполняется пробелом. |
(0) | Заполнитель, который отображает цифру или ноль. Используется, когда нужны ведущие нули или нули в конце числа. |
(#) | Заполнитель, который отображает цифру или ничего не отображает. Используется, когда не нужны ведущие нули или нули в конце числа. |
(%) | Заполнитель процента. Выражение умножается на 100, а знак процента (%) вставляется на той позиции, где он указан в строке формата. |
(E- E+ e- e+) | Экспоненциальный формат. |
Примеры использования символов в выражениях числовых форматов VBA Excel:
Sub FormatNumber2() Dim n As Double n = 2641387.7381962 ‘n = 0.2397842 MsgBox «Форматируемое число = « & n & vbNewLine _ & vbNewLine & «0.##: « & Format(n, «0.##») & vbNewLine _ & vbNewLine & «000.###: « & Format(n, «000.###») & vbNewLine _ & vbNewLine & «#,###.###: « & Format(n, «#,###.###») & vbNewLine _ & vbNewLine & «0 %: « & Format(n, «0 %») & vbNewLine _ & vbNewLine & «0.### E-: « & Format(n, «0.### E-«) & vbNewLine _ & vbNewLine & «0.### E+: « & Format(n, «0.### E+») End Sub |
Символы для текстовых форматов
Символ | Описание |
---|---|
At-символ (@) | Заполнитель для символов, отображающий знак или пробел. |
Амперсанд (&) | Заполнитель для символов, отображающий знак или ничего (пустая строка). |
Меньше (<) | Принудительный перевод всех буквенных символов в нижний регистр. |
Больше (>) | Принудительный перевод всех буквенных символов в верхний регистр. |
Примеры использования символов в выражениях строковых форматов VBA Excel:
Sub FormatString() MsgBox «Номер телефона: « & Format(«1234567890», «+7 (@@@) @@@-@@-@@») & vbNewLine _ & vbNewLine & «Серия и номер паспорта: « & Format(«1234567890», «&& && &&&&») & vbNewLine _ & vbNewLine & «Нижний регистр: « & Format(«Нижний регистр», «<«) & vbNewLine _ & vbNewLine & «Верхний регистр: « & Format(«Верхний регистр», «>») End Sub |
Форматы для различных значений одного выражения
Различные форматы для разных числовых значений
В выражении формата для чисел предусмотрено от одного до четырех разделов, отделяемых друг от друга точкой с запятой. Отображаемая строка зависит от значения, возвращенного параметром Expression функции Format.
Количество разделов | Результат форматирования |
---|---|
Один раздел | Выражение формата применяется ко всем значениям. |
Два раздела | Первый раздел применяется к положительным значениям и нулям, второй – к отрицательным значениям. |
Три раздела | Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям. |
Четыре раздела | Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям, четвертый – к значениям Null. |
Пример использования четырех разделов в выражении формата числовых значений:
Sub FormatDifferentValues() MsgBox «Число 1234,5678: « & _ Format(1234.5678, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _ & vbNewLine & vbNewLine & «Число -25: « & _ Format(—25, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _ & vbNewLine & vbNewLine & «Число 0: « & _ Format(0, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _ & vbNewLine & vbNewLine & «Null: « & _ Format(Null, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») End Sub |
Различные форматы для разных строковых значений
В выражении формата для строк предусмотрено до двух разделов, отделяемых друг от друга точкой с запятой. Отображаемая строка зависит от текста, возвращенного параметром Expression функции Format.
Количество разделов | Результат форматирования |
---|---|
Один раздел | Выражение формата применяется ко всем строковым данным. |
Два раздела | Первый раздел применяется к строковым данным, второй – к значениям Null и пустым строкам («»). |
Пример использования двух разделов в выражении формата строк:
Sub FormatString2() MsgBox «Строка «Белка»: « & _ Format(«Белка», «@;Пустая строка или Null») _ & vbNewLine & vbNewLine & «Пустая строка: « & _ Format(«», «@;Пустая строка или Null») _ & vbNewLine & vbNewLine & «Строка «Null»: « & _ Format(«Null», «@;Пустая строка или Null») _ & vbNewLine & vbNewLine & «Значение Null: « & _ Format(Null, «@;Пустая строка или Null») End Sub |