Маска ввода при вводе в ячейке excel

Управление форматами ввода данных с помощью масок ввода

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

Маска влияет только на ввод значений в Access: она не меняет способ их хранения, который записи от типа данных поля и других свойств. Дополнительные сведения о хранении данных в Access см. в статье Введение в типы данных и свойства полей.

Важно: Эта статья относится только к классическим базам данных Access. Веб-приложения и веб-базы данных Access не поддерживают маски ввода.

В этой статье

Общие сведения о масках ввода

Маска ввода — это строка символов, указывающая формат допустимых значений входных данных. Маски ввода можно использовать в полях таблиц или запросов, а также в элементах управления форм и отчетов. Маска ввода хранится в свойствах объекта.

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

Три компонента маски ввода

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

Первый компонент является обязательным. Он представляет собой знак или строку (последовательность знаков) маски с заполнителями и литералами, например круглыми скобками, точками и дефисами.

Второй компонент не является обязательным и определяет способ хранения встроенных знаков маски в поле. Если для этого компонента задано значение , знаки сохраняются вместе с данными, а если 1, то знаки отображаются без сохранения. Выбрав значение 1, можно сэкономить место для хранения базы данных.

Третий компонент маски ввода также не является обязательным и определяет знак, используемый в качестве заполнителя. По умолчанию в Access используется знак подчеркивания (_). Чтобы задать другой знак, введите его в третьем компоненте маски.

Пример маски ввода для телефонных номеров в формате России: (999) 000-00-00;0;-:

В маске используются два заполнителя — 9 и 0. Заполнитель 9 обозначает необязательные цифры (код города можно не вводить), а 0 — обязательные.

Значение 0 во втором компоненте маски ввода указывает на то, что знаки маски следует хранить вместе с данными.

Третий компонент маски ввода указывает на то, что вместо знака подчеркивания (_) в качестве заполнителя будет использоваться дефис ().

Знаки, определяющие маски ввода

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

Определение маски ввода

Если свойство Формат (Format) управляет тем, как данные отображаются в поле таблицы, то свойство Маска ввода (Input Mask) позволяет контролировать ввод данных в таблицу. И не только контролировать, но и упрощать процесс ввода. Маску используют в том случае, когда вводимые данные должны содержать определенные символы в некоторых позициях вводимой строки. Самым простым и ярким примером таких данных являются номера телефонов. Маска ввода должна обеспечить возможность вводить только цифры номера, а остальные символы (скобки вокруг кода города, дефис между цифрами номера) будут добавляться автоматически. Маска задается с помощью символов, приведенных в табл. 2.12.

Таблица 2.12. Символы для создания масок ввода

Для того чтобы сформировать маску ввода, можно использовать Мастера масок ввода (Input Mask Wizard). Откройте в режиме Конструктора таблицу «Заказы» (Orders). Выделите поле «Дата размещения». Чтобы ввести маску ввода для этого поля, щелкните мышью по ячейке свойства Маска ввода (Input Mask). Нажмите небольшую кнопку с тремя точками (рис. 2.21), которая появится справа (эта кнопка называется кнопкой Построителя и будет встречаться еще во многих местах), и дальше следуйте указаниям мастера:

    В первом диалоговом окне вы можете выбрать нужную маску из списка (рис. 2.22). Если вы попытаетесь вводить данные в поле Проба (Try It), то сможете увидеть, как будут форматироваться вводимые вами символы. Нажмите кнопку Далее (Next).

Сформированная символьная строка маски отображается в поле Маска ввода (Input Mask) для поля «ДатаРазмещения» (OrderDate) (рис. 2.22). Маска ввода состоит из трех частей:

  • символьной строки маски;
  • символа 0. Это означает, что введенные в поле данные будут сохраняться вместе со специальными символами. Можно заменить 0 на 1 — тогда специальные символы маски не будут запоминаться в поле;
  • символа заполнителя.

Как использовать маску ввода в excel vba?

-2 Cher [2018-04-08 07:54:00]

ПРОЧИТАЙТЕ ВНИМАТЕЛЬНО ВОПРОС, ПОЖАЛУЙСТА, ЭТО РЕКОМЕНДАЦИИ EXCEL VBA. NOT EXCEL

Мне была поручена фиксация ввода даты в форме VBA. Текстовое поле должно содержать имя пользователя в виде MM/DD/YYYY .

Мне нужно использовать маску ввода, не разрешено делать что-то как подтверждение даты после или с использованием календаря. До сих пор я мог использовать упомянутые 2 метода (форматирование формата после использования ISDATE ).

Тем не менее, теперь стало ясно, что это должна быть маска, поэтому ключи отфильтровываются при вводе, причем маска отображается при вводе даты: __/__/____

Там, где вы видите символ подчеркивания, он должен иметь возможность вводить числа и всегда находиться на этих позициях

Есть ли способ сделать это? Я могу найти учебник для маски в Access VBA.

input vba excel-vba excel masking

Этот пост может помочь вам.

Использование входной маски

. Вы можете задаться вопросом, есть ли способ настроить маску ввода, которая автоматически добавит двоеточие. Хорошая новость — да, есть. Плохих новостей нет, нет. Звук запутанный? Позволь мне объяснить.

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

  1. Выберите ячейки, которые вы хотите использовать для ввода времени.
  2. Выберите » Формат» в меню «Ячейки». Excel отображает диалоговое окно » Формат ячеек «.
  3. Убедитесь, что отображается вкладка » Число «.
  4. В списке «Категория» выберите » Пользовательский».
  5. Замените все, что находится в поле » Тип», с #»:»00 .
  6. Нажмите OK .

Теперь вы можете ввести свое время, используя только цифры. Проблема (и это плохая новость) заключается в том, что ячейка действительно не содержит времени. Если вы введете 230 (за 2:30), она не будет содержать 2:30 как раз — она содержит двести тридцать. Таким образом, вы не можете напрямую использовать содержимое ячейки непосредственно во времени.

Чтобы преодолеть это, вы можете использовать другой столбец для отображения введенных цифр, преобразованных во время. Все, что вам нужно сделать, это использовать формулу для преобразования. Например, если введенное время было в ячейке A3 , вы можете использовать следующую формулу в другой ячейке для преобразования:

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

(Полная статья и многое другое в источнике.)

Сводные таблицы Excel

Если вам часто приходится вводить даты и время в ячейки, то вам должна понравиться идея писать их сокращенно, без точек-дробей – просто как число. Чтобы в заданном диапазоне ячеек листа, например, число 250616 после ввода и нажатия клавиши Enter автоматически превращалось в 25.06.2016.

Как в Excel настроить быстрый ввод даты без разделителей

Для реализации такого возможны два варианта.

Первый – использовать функцию преобразования текста в дату ДАТАЗНАЧ (DATEVALUE) и функции извлечения фрагментов из текста ЛЕВСИМВ (LEFT), ПРАВСИМВ (RIGHT) и ПСТР (MID), чтобы разделить шесть введенных чисел по два, добавить к ним точки и составить из них полноценную дату в соседней ячейке.

Для реализации быстрого ввода даты возможны два варианта

В англоязычном варианте: =DATEVALUE(LEFT(D1;2)&”.”&MID(D1;3;2)&”.”&RIGHT(D1;2)) .

Если же хочется выполнять это преобразование прямо в той же ячейке, куда вводятся числа, то без макроса не обойтись. Для этого щелкните по ярлычку листа, куда будут вводиться даты и время, и выберите команду Исходный текст (View Code). В открывшееся окно редактора Visual Basic вставьте следующий код.

Private Sub Worksheet_Change(ByVal Target As Range) Dim vVal Dim StrVal As String Dim dDate As Date If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range(«A2:A10»)) Is Nothing Then With Target StrVal = Format(.Text, «000000») If IsNumeric(StrVal) And Len(StrVal) = 6 Then Application.EnableEvents = False dDate = DateValue(Left(StrVal, 2) & «/» & Mid(StrVal, 3, 2) & «/» & Right(StrVal, 2)) .NumberFormat = «dd/mm/yyyy» .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate))) End If End With End If Application.EnableEvents = True End Sub

Диапазон A2:A10 в коде замените на свою область листа, куда подобным образом собираетесь вводить даты.

Как использовать маску ввода в Excel VBA?

ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ ВОПРОС, ПОЖАЛУЙСТА, ЭТО НАМЕРЕНИЯ ОТЛИЧАЮТ VBA. НЕ ЭКСКАЛЬНО

Мне было дано задание зафиксировать ввод даты в форме VBA. В текстовом поле пользователь должен ввести дату в MM/DD/YYYY .

Я должен использовать маску ввода, не разрешено делать что-либо в качестве даты подтверждения после или с использованием календаря. До сих пор я мог использовать 2 упомянутых метода (форсирование формата после использования ISDATE ).

Однако теперь стало ясно, что это должна быть маска, поэтому ключи фильтруются при вводе, причем маска отображается при вводе даты: __/__/____

Где вы видите подчеркивание, он должен иметь возможность только вводить цифры, и / всегда находятся на этих позициях

Есть ли способ сделать это? Я могу только найти учебник для маски в Access VBA.

Я гуглил «маску ввода Excel», и 2-й результат был следующим: Использование маски ввода Microsoft Excel, написанной Алленом Уайеттом .

Использование маски ввода

. Вы можете задаться вопросом, есть ли способ установить маску ввода, которая автоматически добавит двоеточие. Хорошие новости — да, есть. Плохих новостей нет, нет. Звук сбивает с толку? Позволь мне объяснить.

Вы можете настроить пользовательский формат, который будет отображать ваше время в любом формате, который вы хотите. Например, вы можете использовать следующие шаги:

  1. Выберите ячейки, которые вы хотите использовать для ввода времени.
  2. Выберите « Формат» в меню «Ячейки». В Excel отобразится диалоговое окно « Формат ячеек ».
  3. Убедитесь, что отображается вкладка Number .
  4. В списке Категория выберите Пользовательский .
  5. Замените все, что находится в поле « Тип #»:»00 .
  6. Нажмите на ОК .

Теперь вы можете ввести свое время, используя только цифры. Проблема (и это плохие новости) состоит в том, что ячейка не содержит времени. Если вы введете 230 (для 2:30), оно не будет содержать 2:30 как время — оно содержит двести тридцать. Таким образом, вы не можете использовать содержимое ячейки непосредственно в расчетах времени.

Чтобы преодолеть это, вы можете использовать другой столбец для отображения введенных цифр, преобразованных во время. Все, что вам нужно сделать, это использовать формулу, чтобы сделать преобразования. Например, если время, которое вы ввели, было в ячейке A3 , вы можете использовать следующую формулу в другой ячейке, чтобы выполнить преобразование:

Отформатируйте ячейку, содержащую приведенную выше формулу, чтобы она отображала один из различных форматов времени, и все готово.

(Полная статья и многое другое на источнике .)

Создание маски ввода в TextBox с помощью кода VBA Excel на примере номера телефона и номера паспорта. Применимо для набора номера с клавиатуры.

В отличие от VBA Access в VBA Excel нет свойства InputMask объекта TextBox. Поэтому, чтобы добавить подобие маски для TextBox в VBA Excel, приходится писать дополнительную процедуру, контролирующую действия пользователя и добавляющую в нужные места вводимого номера знаки-разделители.

В следующих примерах мы будем создавать простые маски ввода в TextBox с помощью события TextBox_Change и оператора Select Case. Маска будет добавляться при вводе символов с клавиатуры. При вставке номера из буфера обмена, добавление маски не предусмотрено.

Мы не будем добавлять автоматическую проверку вводимого знака (цифра или другой символ), так как после ввода с клавиатуры в любом случае требуется зрительная проверка введенного номера.

Также, при редактировании полностью введенного номера, не стоит удалять более 1 цифры, иначе структура маски может будет нарушена.

Маска ввода номера телефона

Простой код для создания маски ввода номера телефона в TextBox в формате «+7(000)000-00-00»:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Private Sub TextBox1_Change()

    With TextBox1

        Select Case Len(.Text)

            Case 1

            ‘После ввода первого знака добавляем перед ним код страны и скобку

            .Text = «+7(« & .Text

            Case 6

            ‘После ввода шестого знака добавляем в конце скобку

            .Text = .Text & «)»

            Case 10, 13

            ‘После ввода десятого и тринадцатого знака добавляем в конце дефис

            .Text = .Text & «-«

            Case 17

            ‘Удаляем семнадцатый знак сразу после его ввода

            .Text = Left(.Text, 16)

        End Select

    End With

End Sub

Строки кода VBA Excel:

Case 17

‘Удаляем семнадцатый знак сразу после его ввода

.Text = Left(.Text, 16)

ограничивают длину строки, вводимой в TextBox, их можно заменить на установку максимальной длины при инициализации формы:

Private Sub UserForm_Initialize()

    TextBox1.MaxLength = 16

End Sub

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

Маска ввода номера паспорта

Простой код для создания маски ввода номера паспорта в TextBox в формате «00 00 000000»:

Private Sub TextBox2_Change()

    With TextBox2

        Select Case Len(.Text)

            Case 2, 5

            ‘После ввода первого и пятого знака добавляем в конце пробел

            .Text = .Text & » «

            Case 13

            ‘Удаляем тринадцатый знак сразу после его ввода

            .Text = Left(.Text, 12)

        End Select

    End With

End Sub

Если ограничение строки установить при инициализации формы:

Private Sub UserForm_Initialize()

    TextBox2.MaxLength = 12

End Sub

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

 

oleg355

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

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

#1

18.05.2018 15:51:16

Добрый день всем!

Как прописать разрешенный алгоритм ввода в ячейку вручную в диапазоне листа
Если алгоритм нарушается то MsgBox и обнуление значения ячейки
В ячейку должен вводится текст телефона по шаблону +7(###)###-##-##  (c +7 вначале — те один «+» и обязательно 7ка, 2мя скобками, 2тире, 10 цифр от 0 до 9 и только цифры)
Если нарушается ввод по шаблону, то MsgBox и активная ячейка обнуляется
Можно и по варианту 2 — ограничение до 16 симоволов (при этом один +, одна 7, 2 скобки, 2 тире, 10 цифр и только цифры присутствуют) потом перепроверить в конце ввода по сохранению значений в активной ячейке

Сам не знаю как этот шаблон написать …

Макрос по событию

Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name = "Таблица" Then
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub

If Not Intersect(Target, Range("C4:C5003")) Is Nothing Then

'здесь шаблон ввода

Else
MsgBox "Вводите данные только в формате +7(###)###-##-## "
Target = ""
End If

End If
End Sub
 

webley

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

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

#2

18.05.2018 16:00:18

Так вы почти все написали:

Код
If Target like "+7(###)###-##-##" then
 

TheBestOfTheBest

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

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

Excel 2010 +PLEX +SaveToDB +PowerQuery

#3

18.05.2018 16:00:25

Цитата
oleg355 написал:
…разрешенный алгоритм ввода в ячейку вручную…
В ячейку должен вводится текст телефона по шаблону +7(###)###-##-##

Стандартными средствами экселя этого не сделать, надо писать макрос, который будет подставлять в нужном порядке требуемые символы (если действительно нужен ввод, а не отображение). С отображение все проще(пример).

Прикрепленные файлы

  • отображение пример.xlsx (8.46 КБ)

Изменено: TheBestOfTheBest18.05.2018 16:02:45

Неизлечимых болезней нет, есть неизлечимые люди.

 

oleg355

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

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

именно ввод нужен если возможно  — чтобы 10 раз не стиралось если ошибка и не перебивать значения по новой

Изменено: oleg35518.05.2018 16:04:22

 

Ігор Гончаренко

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

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

#5

18.05.2018 16:10:36

Код
Function CheckMask(s$)
  Dim re:  Set re = CreateObject("VBScript.RegExp")
  re.Pattern = "+7(d{3})d{3}-d{2}-d{2}":  CheckMask = re.test(s)
End Function

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

TheBestOfTheBest

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

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

Excel 2010 +PLEX +SaveToDB +PowerQuery

Код #5 сделает проверку на соответствие шаблону, но не автоматизирует Ваш ввод. Что Вам надо пока непонятно….

Неизлечимых болезней нет, есть неизлечимые люди.

 

oleg355

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

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

#7

18.05.2018 16:24:57

Благодарю

Ігор Гончаренко

чего то запутался как функцию прописать  так?

Код
If ActiveCell.Value = CheckMask(ActiveCell.Value) Then

Else
 

oleg355

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

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

Понятно что одна проверка ввода на соответствие шаблону  — это путь когда ошибся все стираешь и по новой набираешь
Автоматизатизация ввода — когда набрал все только цифры вида 79124543456 и при условии что ячейка в текстовом формате именно (а не в формате телефона) подставилось в это цифровое сочетание +, (),  — приводя к виду +7(912)454-34-56
Лучший более вариаент автоматизации -это когда по ходу набора цифр автоматом появляются символы  — набрал семь к ней + прибавился и скобка ( появилась, набрал следующие три цифры — они автоматом в скобкой ) закрылись и тд

Изменено: oleg35518.05.2018 16:45:27

 

If CheckMask(ActiveCell.Value) Then
 ‘  текст в активной ячейке соотв. маске
Else
‘ не соотв. маске

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

StoTisteg

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

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

Я бы на SelectionChange повесил:
1) проверяем, что ячейка одна и нужная
2) задаём в ней +7(
На Change:
0) проверяем, что ячейка одна и нужная
1) +7( стирать не даём
2) проверяем, что введена цифра, если нет — удаляем
3) после 6 символа ставим ), после 10 и 13 — -, больше 15 символов вводить не даём.
То есть просто не даём пользователю вводить не то, а не требуем верного ввода.

Изменено: StoTisteg18.05.2018 16:52:25

 

webley

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

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

#11

18.05.2018 17:03:14

можно вот так реализовать ввод телефона в любом формате с последующим преобразованием:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    
    Dim st As String
    st = Target
    st = Replace(st, "(", "")
    st = Replace(st, ")", "")
    st = Replace(st, "+", "")
    st = Replace(st, "-", "")
    st = Replace(st, " ", "")
    
    If st Like "7##########" Or st Like "8##########" Or st Like "##########" Then
        st = Right(st, 10)
        Target = "+7(" & Mid(st, 1, 3) & ")" & Mid(st, 4, 3) & "-" & Mid(st, 7, 2) & "-" & Mid(st, 9, 2)
    Else
        Target = ""
    End If
End Sub
 

oleg355

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

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

#12

18.05.2018 17:58:39

webley

ваш вариант покруче будет — огромное спасибо за помощь !
Так сделал — в Эта книга

Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ' рабочий супер от webley
Application.MoveAfterReturn = False 'защита от нажатия ENTER сброс флажка в в настройках Excel Файл-Параметры-Дополнительно - Переход к другой ячейке после нажатия Ввод

If Sh.Name = "Таблица" Then
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
On Error Resume Next
'If Not Intersect(Target, Range("C4:C5003")) Is Nothing Then
If Not Intersect(ActiveCell, Range("C4:C5003")) Is Nothing Then
Dim st As String
    st = Target
    st = Replace(st, "(", "")
    st = Replace(st, ")", "")
    st = Replace(st, "+", "")
    st = Replace(st, "-", "")
    st = Replace(st, " ", "")
     
    If st Like "7##########" Or st Like "8##########" Or st Like "##########" Then
        st = Right(st, 10)
        Target = "+7(" & Mid(st, 1, 3) & ")" & Mid(st, 4, 3) & "-" & Mid(st, 7, 2) & "-" & Mid(st, 9, 2)
    Else
        MsgBox "Введено недостаточно цифр ! Вводите 11 цифр которые должны начинаться на 7 или 8 (либо просто 10 цифр номера без начальной 7 или 8)"
        Target = ""
    End If
End If
On Error GoTo 0
End If
End Sub

Хотя самый лучший  вариант автоматизации -это когда по ходу набора цифр автоматом появляются символы — набрал семь к ней + прибавился и скобка ( появилась, набрал следующие три цифры — они автоматом в скобкой ) закрылись и тд и так пока цифры набираешь — автоматом символы добавляются  закончился требуемый
набор цифр — вылетает MsgBox «Набор телефона закончен!» Тогда исключается недобор и перебор количества набираемых цифр в ячейке ..

Изменено: oleg35518.05.2018 18:28:35

 

RAN

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

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

#13

18.05.2018 18:21:32

Цитата
oleg355 написал:
самый лучший  вариант автоматизации -это когда

под такую хотелку используется соответствующее ПО
А в Excel решение такой задачи, хоть в форме, хоть на листе — пляски с бубном вокруг костыля.

 

oleg355

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

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

ради чего все делалось
есть диапазон на определенных листах книги куда нужно вносить телефонный номер с помощью формы
(однако при этом пользователь может внести вручную номер в ячейку  — его же не заставишь только формой вводить )
тк телефонный номер клиента — это важно   нужно было ввод формой и ручным вводом защитить от ошибок
те ввести правило — условие записи номера только 10 цифр после 7 или 8  формой либо ручным вводом в активную ячейку для пользователя и обложить его MsgBox
от неправильного ввода
Код 4 этажный — но может кому поможет при данной задаче
задавал вопросы — большая благодарность Run,webley

Прикрепленные файлы

  • Книга4.xlsm (36.23 КБ)

 

Юрий М

Модератор

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

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

#15

18.05.2018 21:13:17

Цитата
oleg355 написал:
пользователь может внести вручную номер в ячейку  — его же не заставишь только формой вводить

Защитить ячейку, макросу разрешить ввод.

 

oleg355

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

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

#16

18.05.2018 21:27:00

постоянно в разных макросах в разных диапазонах снимать защиту — одевать защиту + параметр UserInterfaceOnly  — я такто чайник но для меня проще практически идентичный макрос на форму и диапазон прописать и в тексте VBA разложить макросы комментариями    в этих защитах снятиях можно запутаться если макросов много  где надо снимать — одевать и при каких условиях   (если делать защиту то глобально  на все если в пользователях не уверен) еще извините может неправ

Изменено: oleg35518.05.2018 21:36:28

Определение маски ввода

В то время как свойство Format определяет, как данные отображаются в поле таблицы, свойство Input Mask контролирует, как данные вставляются в таблицу. И не только для проверки, но и для упрощения процесса ввода. Маска используется, когда входные данные должны содержать определенные символы в некоторых позициях входной строки. Самый простой и яркий пример таких данных — телефонные номера. Маска ввода должна обеспечивать возможность ввода только цифр номера, а остальные символы (скобки вокруг префикса, тире между цифрами номера) будут добавляться автоматически. Маска задается с помощью символов, представленных в таблице. 2.12.

Символ маски Описание
  В эту позицию необходимо ввести номер. Знаки плюс (+) и минус (-) не допускаются
девять Здесь необходимо ввести число или пробел. Знаки плюс (+) и минус (-) не допускаются
# В этой позиции необходимо ввести число, пробел и знаки плюс (+) или минус (-)
L В этой позиции необходимо ввести букву
? В этой позиции вы можете ввести букву или пробел
А В этой позиции необходимо ввести букву или цифру
а Здесь необходимо ввести букву, цифру или пробел
& Здесь необходимо ввести произвольный символ или пробел
С Здесь вы можете ввести произвольный символ или пробел. Если пользователь ничего не вводит, Access не будет вводить никаких данных в этом месте
… (точка) Десятичный разделитель (зависит от региональных настроек в окне «Язык и стандарты» на Панели управления Windows)
, (запятая) Разделитель тысяч (зависит от региональных настроек в окне «Язык и стандарты» на Панели управления Windows)
-, / Разделители в значениях даты и времени (зависит от региональных настроек в окне «Язык и стандарты» на Панели управления Windows)
Преобразование всех символов справа в верхний регистр
! Указывает, что маска должна заполняться справа налево. Этот символ следует использовать, когда символы в левой части маски необязательны. Его можно разместить в любом положении маски
  Указывает, что следующий символ следует рассматривать как постоянный символ, даже если это специальный символ маски. Например, A отобразит букву A в форме
«буквальный» Вместо повторного использования символа обратной косой черты () вы можете просто заключить любой литерал в кавычки

 Символы для создания масок ввода

Чтобы создать маску ввода, вы можете использовать мастер маски ввода. Откройте таблицу «Заказы» в режиме «Дизайн». Выделите поле «Вставить дату». Чтобы вставить маску ввода для этого поля, щелкните ячейку свойств маски ввода. Нажмите на маленькую кнопку с тремя точками (рис. 2.21), которая появляется справа (эта кнопка называется кнопкой Builder и находится во многих других местах), затем следуйте инструкциям мастера:

  1. В первом диалоговом окне вы можете выбрать необходимую маску из списка (рис. 2.22). Если вы попытаетесь ввести данные в поле «Попробовать», вы увидите, как будут отформатированы введенные вами символы. Нажмите кнопку Далее).

Сформированная символьная строка маски отображается в поле Input Mask для поля OrderDate (рис. 2.22). Маска ввода состоит из трех частей:

  • маска строки символов;
  • символ 0. Это означает, что данные, введенные в поле, будут сохранены вместе со специальными символами. Вы можете заменить 0 на 1 — тогда спецсимволы маски не будут храниться в поле;
  • символ-заполнитель.

Управление форматами ввода данных с помощью масок ввода

Вы можете помочь пользователям правильно вводить данные в классические базы данных Access, связав маски ввода с полями с четко определенным форматом значений, такими как номера телефонов.

Форма влияет только на то, как значения вводятся в Access — она ​​не меняет способ их хранения, какие записи из типа данных поля и других свойств. Дополнительные сведения о хранении данных в Access.

Содержание

  1. Excel маска ввода
  2. Управление форматами ввода данных с помощью масок ввода
  3. В этой статье
  4. Общие сведения о масках ввода
  5. Три компонента маски ввода
  6. Когда следует избегать использования масок ввода в Access
  7. Добавление маски ввода в поле таблицы с помощью мастера масок ввода
  8. Добавление маски ввода в запрос
  9. Добавление маски ввода в элемент управления формы или отчета
  10. Настройка масок ввода в мастере
  11. Настройка масок ввода в свойстве поля
  12. Примеры масок ввода
  13. Использование масок ввода для адресов электронной почты
  14. Маска ввода ячейки. Хочу вводить время в ячейку по маске
  15. Маска ввода полю в форме в Excel
  16. Помогите составить маску формата ячеек для Excel
  17. Маска ввода значиний в TextBox

Excel маска ввода

Управление форматами ввода данных с помощью масок ввода

​Смотрите также​ Then​ Cancel As MSForms.ReturnBoolean)​If KeyCode =​ нехватает пока еще​ R, 1))) U​ может не быть​ формы есть:​

​ (поля) влечет за​: Добрый день!​ цифр, все в​( ) 555-0199​ ввода.​ изменить, и выберите​ ввода, если верно​).​ разделенных точками с​Вы можете помочь пользователям​iL = Asc(«1»)​Me.Tag = vbNullString​ 8 And (Right(t,​

​ заниний в VBA.​​ = False If​ на компьютереНапример, я​-Data​ собой пересчет параметров​Поискал — не​ верхнем регистре. Данный​

В этой статье

​В этом случае в​Чтобы запустить мастер масок​

​ в контекстном меню​

​ одно из следующих​В приведенной ниже таблице​ запятой. Назначение каждого​

​ правильно вводить данные​iR = Asc(«9»)​End Sub​ 1) = «-«​

​ в формах использу​-ControlSource​

Общие сведения о масках ввода

​ и как одно​ нашел. ​ тип маски ввода​ области междугородного кода​ ввода, нажмите кнопку​ команду​ утверждений.​ перечислены заполнители и​ из компонентов описано​ в классические базы​Else​Private Sub TextBox1_KeyDown(ByVal​

​ Or Right(t, 1)​: По этой ссылке​ = «.» Or​ ю разные элементы​-Text​ из исходных данных​Итак, есть ячека​ помогает, например, правильно​ используется местозаполнитель 9,​Построить​Конструктор​Иногда может потребоваться ввести​ литералы, используемые в​

Три компонента маски ввода

​ ниже.​ данных Access, подключив​iL = Asc(«0″)​ KeyCode As MSForms.ReturnInteger,​ = » «)​ можно найти пример​ Mid(ST, R, 1)​

​ управления, которые хранятся​причем, в ‘Text’​ эта самая ячейка​ А1.​ вводить инвентарные номера​ поэтому междугородные коды​.​.​

​ данные в формате,​ масках ввода, и​Первый компонент является обязательным.​ маски ввода к​iR = Asc(«2»)​ ByVal Shift As​ Then t =​​ программы, в которой​​ = » «​ в Ocx Файлах,​ — это та​​ (поле), но уже​​В нее вводится​ или заполнять другие​ необязательны. Кроме того,​​Нажмите кнопку​​В бланке запроса установите​ не соответствующему маске.​ описано их влияние​

​ Он представляет собой​ полям, имеющим строго​End If​ Integer)​ Left$(t, Len(t) -​ реализована требуемая вам​ Then U =​ типа msmask32.ocx и​ чушь, которая будет​ не число, а​ время. Формат ячейки​

​ формы складского учета.​ восклицательный знак (!)​Изменить список​​ курсор в столбец​​ Маска ввода не​​ на ввод данных.​

​ знак или строку​ определенный формат значений,​If KeyCode iR Then​Dim iL As​If KeyCode <>​

​’ГПС государственно пенсионное​

​ SubЕсли нужно не​ таких файлов несколько. ​ ячейку. А как​ естественно идет путь​Умотался вводить эти​

​ разной длины, маски​

​Настройка масок ввода​

​Курсор можно поместить в​

​0​ литералами, например круглыми​

​ ввод значений в​

​GoTo NavigateKey​ Integer​

​ страхование 11 цифр​ на весь лист​

​ записать условие Маски​ указания ошибки до​

​ ввода не подходят​(206) 555-ТЕЛЕ​.​ любую строку для​ полем даты и​Пользователь должен ввести цифру​

​ скобками, точками и​

​ Access: она не​Else​Dim iR As​

​ <> Asc(vbTab) And​ по маске 354-456-987​ распространять допиши проверку​

​ приложение людям и​

​ ввода в ‘ControlSource’​ самого тела процедуры.​ без них -​

​ для их проверки​

​Предоставляется возможность заменить буквами​Перейдите к новой записи​ этого поля.​

​ времени. Маски ввода​

​ (от 0 до​ дефисами.​ меняет способ их​

Когда следует избегать использования масок ввода в Access

​Mid$(s, iPos +​ Integer​ Len(t) >= 14​ 56​ нужного региона​ не знаю, стоят​ я не знаю,​ В проге написать​

​ никак :((​ при вводе. Вместо​ четыре последних цифры​ в этом окне​Нажмите клавишу F4, чтобы​

​ несовместимы с таким​ 9).​Второй компонент не является​ хранения, который записи​ 1, 1) =​Dim s As​

Добавление маски ввода в поле таблицы с помощью мастера масок ввода

​ Then KeyCode =​’ SaveInfo ГПС,​И не надо!​ у них эти​ все мои попытки​ логические блоки на​

​Как в ячейку​​ масок ввода рекомендуется​ телефонного номера в​ и введите новое​ открыть окно свойств​ элементом управления.​9​​ обязательным и определяет​​ от типа данных​

​ Chr$(KeyCode)​ String​ 0 ‘ ограничение​ Me.txt1_ГПС​ В массив их​​ библиотеки.​​ заканчиваются сообщением ПК​

​ возможные ошибки пользователя​ вводить тупо «132000»,​ использовать свойства​

​ формате США. Обратите​​ описание в поле​​ поля.​​Маски ввода можно использовать​​Пользователь может ввести цифру​​ способ хранения встроенных​​ поля и других​

​iPos = 6​With Me.TextBox1​​ на количество введённых​ ​End Sub​

​ все! и одну​Допустим я пропишу,​

​ : ‘Не удается​​ неохота по двум​​ а в итоге​Правило проверки​ внимание на местозаполнитель​

​Описание​В разделе​ для полей с​​ (от 0 до​​ знаков маски в​

​ свойств. Дополнительные сведения​

​End If​s = .Text​​ символов​​Private Sub txt1_ГПС_KeyPress(ByVal​

Добавление маски ввода в запрос

​ процедуру проверки на​ что при первом​ задать свойство ‘ControlSource’.​ причинам: во-первых: придется​ получить «13:20:00»??​и​​ 0 в области​​.​

​Свойства поля​ типом данных «Текстовый»,​ 9).​ поле. Если для​

​ о хранении данных​Case 6, 7​iPos = Int(.Tag)​

​Me.txt1_ГПС = t​ KeyAscii As MSForms.ReturnInteger)​ всеВстречалось уже. Но​

​ запуске regsvr32 зарегит​​ Недопустимое значение свойства’.​​ сувать эту логику​​( В идеале​​Сообщение об ошибке​​ кода города, который​​В поле​

​на вкладке​ «Числовой» (кроме кода​​#​ ​ этого компонента задано​ в Access см.​

Добавление маски ввода в элемент управления формы или отчета

​If KeyCode Asc(«9») Then​Case -1​ textbox​If Not IsNumeric(Chr$(KeyAscii))​Как будет выглядеть маска​

Настройка масок ввода в мастере

​Нужно ли еще​ в свойствах ячейки​ ошибки пользователей угадать​ вида __:__:__ ).​ в таблице ниже,​

​#999​ заполнители с помощью​​Маска ввода​ ​Примечание:​

​ или «минус». Если​​, знаки сохраняются вместе​​ и свойства полей.​

​GoTo NavigateKey​​iPos = 0​​End Sub​

​ Then​ формата ячеек в​ как-то настраивать ссылки​ формы?​​ не возможно. Вот​​Ну суть понятна. ​

​ гарантирует, что адрес​​-20​​ разрешенных знаков из​.​ Если применить маску ввода​ ничего не ввести,​

​ с данными, а​​Важно:​​Else​GoTo SetPos​

​Вам над только​​KeyAscii = 0​​ Excel, если требуется​ на эти библиотеки​

Настройка масок ввода в свойстве поля

​Что есть ‘ячейка​ я и хочу​ Как в эксесс​ электронной почты будет​2000​​ списка таблицы.​​Чтобы запустить мастер масок​

​ к полю с​ будет вставлен пробел.​ если​

​ Эта статья относится​Mid$(s, iPos +​​Case 0​​ заменить txt1_ГПС на​ ‘ если в​

​ отображать вещественные числа,​ или формы, сами​

​ формы’? О чём​ сразу в конструкторе​2003​ состоять из одного​

Примеры масок ввода

​Любое положительное или отрицательное​Щелкните стрелку списка​ ввода, нажмите кнопку​

​ типом данных «Дата/время»,​

​ только к классическим​

​If KeyCode Asc(«3») Then​: Спасибо, если ничего​ ввод символа​К примеру при​ своем компе, где​

​ ввода по аналогии​
​: См. в «Приемах»:​

​ одного или нескольких​ и не имеющее​ тип маски.​ мастера.​ элемент управления​Пользователь может ввести букву.​ значение​ данных Access не​ = 6, 7,​GoTo NavigateKey​ не найду лучше,​​Else ‘иначе делаем​​ вводе чисел​​ они зарегены)​​ употребления термина ‘форма’:​

​ как это делается​

​aaaann​
​ знаков, точки и​

​ разделителей тысяч и​Нажмите кнопку​В области переходов щелкните​

​ поддерживают маски ввода.​ 0)​Else​

​ то воспользуюсь этим​

​1,23 отображается 1,23​Просто я попробовал​1. Форма как​ в Access, причем​: Есть более сложный​ еще одного или​

​ правой кнопкой мыши​.​Пользователь должен ввести букву​, можно сэкономить место​Общие сведения о масках​End If​Mid$(s, iPos +​ кодом.​

Использование масок ввода для адресов электронной почты

​t = Me.txt1_ГПС​1,230 отображается 1,23​ на одном компьютере​ ‘UserForm’ — объект,​ не обязательно программно​ вариант через формулу,​ нескольких знаков. Например,​>L. L?000L0​​. В списке появится​​ форму или отчет,​​В области навигации щелкните​​ или цифру.​

​ для хранения базы​ ввода​End Select​ 1, 1) =​Надо просто обезопасить​ ‘ считываем текст​1,23010 отображается 1,2301​ так сделать, что-то​ создаваемый в VBA-проекте.​ — я не​ но без макросов​ адрес​​ЗЕЛЕНЫЙ339М3​​ новая маска ввода.​​ которые требуется изменить,​​ таблицу правой кнопкой​​a​​ данных.​Знаки, определяющие маски ввода​GoTo Repaint​ Chr$(KeyCode)​ ввод значений пользовалтеля​ из textbox в​1,0 отображается 1​​ не получалось. ​​ На нём и​​ вижу эту функцию​​ :)​prover[email protected]​

​В области навигации щелкните​

​ мыши и выберите​Пользователь может ввести букву​Третий компонент маски ввода​

​Когда следует избегать использования​​NavigateKey:​​iPos = 1​

​ по максиммуму.​ переменную t​-1,0 отображается -1​Не подскажете в​

​ нужно размещать контрол​ в параметрах ячейки​в ячейке А1​будет правильным, а​Сочетание обязательных (L) и​ объект правой кнопкой​ контекстном меню команду​

​ в контекстном меню​

Маска ввода ячейки. Хочу вводить время в ячейку по маске

​ или цифру.​​ также не является​
​ масок ввода в​Select Case KeyCode​
​End If​по этой Маске​
​If t Like​Возможно ли задать​ крадце, как это​ MaskEdit.​
​ (поля) формы. ​ вводишь, например, 131827;​[email protected],com​ необязательных (?) букв​

​ такую маску, заранее​

​ в ячейку B1​​или​ и обязательных цифр​ в контекстном меню​.​
​Конструктор​Пользователь должен ввести какой-либо​ знак, используемый в​Добавление маски ввода в​

​Select Case iPos​

​Select Case Left$(.Text,​ заполнения перемещать курсор​ Like «;-;» Then​ спасибо.​Подскажите, плииз, можно​

​ способ ввода данных​​: Есть такой контрол​
​ формулу:​

​Щелкните правой кнопкой мыши​.​
​ знак или пробел.​ качестве заполнителя. По​

Маска ввода полю в форме в Excel

​ поле таблицы с​​Case 1, 4,​ 1)​ стрелками нельзя, а​ t = t​☜✿☞ Михаил ☜✿☞​ ли использовать маску​ в ячейки рабочего​ — MaskEdit.​»=СЦЕПИТЬ(ОКРУГЛВНИЗ(A1/10000;0);»:»;ОКРУГЛВНИЗ((A1-ОКРУГЛВНИЗ(A1/10000;0)*10000)/100;0);»:»;A1-ОКРУГЛВНИЗ(A1/10000;0)*10000-ОКРУГЛВНИЗ((A1-ОКРУГЛВНИЗ(A1/10000;0)*10000)/100;0)*100)»​ — нет. Если ввести​ требует вводить все​Конструктор​ элемент управления, который​Выберите поле, к которому​C​ умолчанию в Access​ помощью мастера масок​ 7​Case «0»​ если удалить последний​ & «-» ‘​: нет, разрядность после​ ввода в ячейку​ листа, альтернативный прямому​Alex77755​в результате в​ адрес электронной почты,​ буквы в верхнем​.​ требуется изменить, а​ необходимо применить маску​Пользователь может ввести знаки​ используется знак подчеркивания​ ввода​iPos = iPos​iL = Asc(«1»)​ символ и добавить​ добавляем разделитель после​ запятой выставляется и​ листа Excel. Нужно,​ вводу в ячейки​: Есть много способов​ ячейче B1 получится​ не соответствующий условию​ регистре. Чтобы использовать​Выберите поле, для которого​ затем выберите в​ ввода.​ или пробелы.​ (_). Чтобы задать​Создание настраиваемых масок ввода​

​ — 1​​iR = Asc(«9»)​ в первый значение​

​ первых 3 и​​ все​ чтобы он не​ листа (меню ‘Данные’,​ ограничить. Ограничь сами​
​ 13:18:27, причем Excel​ на значение, введенные​ маску ввода этого​ необходимо создать настраиваемую​ контекстном меню команду​В разделе​

​. , : ; — /​​ другой знак, введите​Примеры масок ввода​Case 3, 6​Case «1», «2»​ уже изменяется​ 6 цифр​Iгор прокопенко​ ругался, а сам​ пункт ‘Форма. ‘.Comanche,​
​ ячейки на листе​ автоматически распознает это​ данные будут отклонены​ типа, необходимо задать​ маску ввода.​Свойства​Свойства поля​Разделитель целой и дробной​ его в третьем​Использование масок ввода для​iPos = iPos​iL = Asc(«0»)​т. е. будет​
​If t Like​
​: Нужно поставить формат​
​ переделывал, например человек​
​именно: ‘1. Форма​ через меню Данные->Проверка. ​ значение как дату.​ и появится сообщение,​ для типа данных​В области «Свойства поля»​.​на вкладке​ части, групп разрядов,​ компоненте маски.​ адресов электронной почты​ — 2​iR = Asc(«9»)​ ;#-;-; # и​
​ «;-;-;» Then t​ ячеек «общий».​ вводит : «петров​ как ‘UserForm’ -​

​Используй функцию IsNumeric(text)​MCH​ указанное в свойстве​
​ поля таблицы значение​ щелкните поле​На вкладке​
​Общие​ значений дат и​Пример маски ввода для​Маска ввода — это​End Select​Case «3»​
​ если ошибся на​ = t &​Azovian​ а.а.» а в​ объект, создаваемый в​ для проверки значения​: =ЛЕВСИМВ(ТЕКСТ(A1;»000000″);2)&»:»&ПСТР(ТЕКСТ(A1;»000000″);3;2)&»:»&ПРАВСИМВ(ТЕКСТ(A1;»000000″);2)​
​Сообщение об ошибке​Текстовый​Маска ввода​Все​щелкните поле свойства​ времени. Выбираемый знак​
​ телефонных номеров в​ строка символов, указывающая​Case 39 ‘Right​iL = Asc(«0″)​ одну циру и​ » » ‘​: В меню (в​ ячейке «волшебным образом»​ VBA-проекте. На нём​
​ введенного в поле​покороче будет​. Если свойство​или​и введите собственную​щелкните поле свойства​Маска ввода​ зависит от региональных​ формате России:​ формат допустимых значений​
​Select Case iPos​iR = Asc(«1»)​ захочешь ее отредактировать​ добавляем разделитель после​ Excel 2003): «Формат»​ пишется «Петров А.А.».​ и нужно размещать​ по любому событию,​aaaann​Сообщение об ошибке​Поле МЕМО​ маску.​
​Маска ввода​.​
​ параметров Windows.​(999) 000-00-00​ входных данных. Маски​Case 0, 3,​End Select​
​ с редактированием уже​ 9 цифр​ => «Формат ячеек». ​ На с++ видела​ контрол MaskEdit.’​
​ которое тебе нужно.​: =ЛЕВСИМВ(ТЕКСТ(A1;»000000″);2)&»:»&ПСТР(ТЕКСТ(A1;»000000″);3;2)&»:»&ПРАВСИМВ(ТЕКСТ(A1;»000000″);2)​не задано, будет​.​Чтобы сохранить изменения, нажмите​.​Чтобы запустить мастер масок​>​
​;0​ ввода можно использовать​ 6​If KeyCode Компоненты —>​Alex77755​Раза в три​
​Свойство​98115-​Для полей числового и​ ввода, нажмите кнопку​Построить​ переведены в верхний​В маске используются два​ или запросов, а​ + 1​ > iR Then​: Нашел код ,но​ текст обратно в​В левом поле​ знаю можно ли​ ставишь галочку на​: Ребятааааааа. У меня​ :)​Параметр​98115-3007​ денежного типов определение​Построить​.​ регистр.​ заполнителя — 9 и​ также в элементах​Case 1, 4​GoTo NavigateKey​
​ его надо редактировать​ textbox​ выбрать (все форматы)​ так вообще Помогите)))попробуй​ MS Masked Edit​ 8 форм, в​Помоги, пожалуйста с​

Помогите составить маску формата ячеек для Excel

​Правило проверки​Обязательный почтовый индекс и​ маски ввода задается​. Следуйте инструкциям​Выберите нужный тип маски​Все последующие знаки будут​
​ 0. Заполнитель 9​ управления форм и​
​iPos = iPos​
​Else​
​ под себя​
​End If​
​ , а справа​
​ так: первую букву​ control —> запускаешь​ каждой порядка 30​

​ «Самым простым макросом»​​Is Null Or ((Like​ необязательная область четырехзначного​ вручную.​

​ мастера.​​ ввода из списка.​ переведены в нижний​

​ обозначает необязательные цифры​​ отчетов. Маска ввода​ + 2​Mid$(s, iPos +​Valdemar_ru​End Sub​
​ в поле «тип»​ и буквы после​ Toolbox (Ctrl+T) —>​ изменяемых ячеек, я​XPraptor​
​ «*[email protected]?*.?*») And (Not​ расширения.​В таблице ниже приведены​В мастере предусмотрены маски​Щелкните поле​ регистр.​ (код города можно​

Маска ввода значиний в TextBox

​ хранится в свойствах​​End Select​
​ 1, 1) =​: Const MaskFiller As​Private Sub txt1_ГПС_KeyDown(ByVal​ записать: #’##0,;##​
​ пробелов и точек​ из него тащишь​
​ не хочу как​: Для обработки данных​ Like «*[ ,;]*»))​

​>L​​ примеры использования масок​ ввода для наиболее​Проба​!​ не вводить), а​

​ объекта.​
​Case 27 ‘Esc​ Chr$(KeyCode)​ String = «__.__.__»​ KeyCode As MSForms.ReturnInteger,​
​Количество диезов после​ переводит в верхний​
​ на свою форму​

​ вы советуете прописывать​ я использую форму​
​Сообщение об ошибке​Мария​
​ ввода.​ распространенных вариантов форматирования,​
​и введите данные,​Маска ввода заполняется слева​ 0 — обязательные.​Маску ввода рекомендуется использовать,​iPos = 0​
​iPos = 3​’​
​ ByVal Shift As​ запятой — максимально​ регистр​ новый контрол.​
​ для каждой в​ с кнопочками, полями​ ​Вадим​Маска ввода​ однако в некоторых​ чтобы проверить работу​ направо, а не​
​Значение 0 во втором​ когда вводимые значения​Case 9 ‘Tab​End If​Private Sub TextBox1_Enter()​ Integer)​
​ нужное. Перед нулём​Private Sub Worksheet_Change(ByVal​Если MS Masked​ свойстве ‘Change’ ни​
​ со списком, просто​
​(необязательно)​

​Имя или фамилия, первая​Обеспечивает ввод значения в​ случаях требуется настроить​ маски.​
​ справа налево.​ компоненте маски ввода​
​ должны иметь единый​Exit Sub​Case 3​With Me.TextBox1​

​On Local Error​ диезы можно не​ Target As Range)​ Edit в списке​ IsNumeric типа:​ полями и т.д.​Введите адрес электронной почты​
​ буква которой автоматически​ виде​ маску под особые​Чтобы оставить маску ввода​​ указывает на то,​ формат, например для​End Select​If KeyCode =​

​If Not (.Text​ Resume Next​ ставить (они в​ Dim S, ST,​ нет — ищешь​m: If Not​ и т.п. Через​ со знаком «@»​
​ вводится заглавной.​Примечания​ нужды. Чтобы сделать​ без изменений, нажмите​
​Знаки, следующие непосредственно за​

​ что знаки маски​ полей с номерами​Repaint:​

​ Asc(«0») Or KeyCode​​ Like «##.##.##») Then​t = Me.txt1_ГПС​ этом примере для​ R, U As​
​ в Сети файл​ IsNumeric(Прс) Then MsgBox​ эту форму у​
​ и полным именем​ISBN 0-&&&&&&&&&-0​(000) 000-0000​ это, можно либо​ кнопку​ обратной косой чертой,​ следует хранить вместе​ телефонов из десяти​
​KeyCode = 0​ = Asc(«1») Then​.Text = MaskFiller​ ‘ считываем текст​ разделения по разрядам).​ Boolean ST =​ MSMASK32.OCX (или запрашиваешь​

​ ‘Вводите только число,​​ меня заводятся новые​ домена (пример: [email protected]).​ISBN 1-55615-507-7​

​(206) 555-0199​​ изменить одну из​Далее​
​ отображаются без изменений.​
​ с данными.​
​ цифр. Если пользователь​
​.Text = s​Mid$(s, iPos +​
​End If​
​ из textbox в​
​Valdemar_ru​ Target.Value S =​
​ на форуме -​
​ пробел и буквы​
​ данные и идет​
​Дополнительные сведения о применении​
​Учетный номер книги с​

​В данном случае пользователи​ предопределенных масок мастера​
​.​
​»»​

​Третий компонент маски ввода​ введет номер, не​SetPos:​ 1, 1) =​
​If Len(.Tag) =​ переменную t​
​: Здравствуйте. Нужна помощь​ UCase(Left(ST, 1)) U​
​ пришлёт кто-нибудь), регистрируешь​ могут привести к​
​ корректировка. Проблемма: в​ правил проверки, а​
​ текстовой константой, обязательными​
​ должны вводить код​
​ ввода, либо вручную​Выберите способ хранения данных.​
​Знаки, заключенные в двойные​
​ указывает на то,​
​ указав код города,​
​.SelStart = iPos​
​ Chr$(KeyCode)​
​ 0 Then​’ если нажат​как можно обойтись​
​ = False For​
​ его в системе​
​ сбою программы’ Прс​ одну из ячеек​ также пошаговые инструкции​
​ первой и последней​
​ города, так как​
​ задать свойство «Маска​
​Чтобы сохранить изменения, нажмите​ кавычки, отображаются без​
​ что вместо знака​
​ данные не будут​
​.SelLength = 1​
​iPos = 4​
​Application.SendKeys ««​
​ backspace и последний​
​ без MaskEdBox, чтобы​
​ R = 2​
​ через REGSVR32.EXE, и​
​ = Worksheets(‘транспорт’).Range(‘C2’) GoTo​
​ (поле) формы пользователи​ см. в статье​ цифрами и произвольной​
​ в соответствующем разделе​
​ ввода» для соответствующего​
​ кнопку​ изменений.​ подчеркивания (​
​ приняты в Access,​
​.Tag = Format$(iPos,​
​Else​
​.Tag = «-1″​ символ — символ​ сделать маску ввода​
​ To Len(ST) S​ повторяешь всё сначала.​ m End Ifни​
​ вместо исправления числа​
​ Ограничение ввода данных​
​ комбинацией букв и​
​ маски (000 в​
​ поля.​
​Готово​Маски ввода — это​_​
​ пока пользователь не​
​ «0»)​
​GoTo NavigateKey​
​End If​
​ «-» или пробел,​
​ в TextBox​
​ = IIf(U =​Удачи.Excel! Как заставить​ типа MaskEdit в​
​ пихают пробел. В​
​ с помощью правил​
​ знаков между ними.​ скобках) используется заполнитель​Откройте объект в конструкторе​
​.​
​ полезный инструмент, но​
​) в качестве заполнителя​
​ добавит код города.​End With​End If​
​End With​
​ стираем 2 последних​
​___-___-___ __ (111-111-111​ True, S &​ работать формы в​
​ теле проги. У​ результате, т.к. у​ проверки.​
​>LL00000-0000​
​ 0.​
​ и щелкните поле,​
​В области переходов щелкните​
​ он уместен не​
​ будет использоваться дефис​
​Маски ввода состоят из​
​End Sub​Case 4​
​End Sub​ символа — «-«​
​ 11)​
​ UCase(Mid(ST, R, 1)),​ книге, если они​
​ меня в Properties​
​ меня прописано, что​
​К началу страницы​
​БД51392-0493​(999) 000-0000!​
​ к которому нужно​ правой кнопкой мыши​
​ во всех случаях.​
​ (​ одного обязательного и​
​imort​
​If Mid$(Me.TextBox1.Text, 4,​
​Private Sub TextBox1_Exit(ByVal​
​ и последнюю цифру​
​самому написать код​
​ S & LCase(Mid(ST,​
​ используют библиотеки которых​
​ ‘TextBox’ этой ячейки​
​ изменение этой ячейки​
​vldmlt​
​Сочетание обязательных букв и​
​(206) 555-0199​
​ добавить настраиваемую маску​ запрос, который требуется​
​ Не используйте маски​
​-​

​ двух необязательных компонентов,​​:​

Источник

Эксперт MS Access

2832 / 1374 / 215

Регистрация: 13.05.2011

Сообщений: 4,208

1

Маска ввода в ячейку для ввода часы:мин

09.08.2020, 17:55. Показов 2711. Ответов 2


Студворк — интернет-сервис помощи студентам

Добрый день. Подскажите пожалуйста: как можно на ячейку, в которую вводятся данные по работе оборудования, установить маску ввода (например, как в Access). Т.е. вводятся четыре цифры подряд, а в ячейке записывается например так: 03:15. Спасибо.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.08.2020, 17:55

2

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

10.08.2020, 16:19

2

смотрите «формат ячейки», но это будет только визуальное отображение.



0



ᴁ®

Эксперт MS Access

3070 / 1736 / 361

Регистрация: 13.12.2016

Сообщений: 5,938

Записей в блоге: 4

10.08.2020, 16:43

3

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



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.08.2020, 16:43

3

Специально для Вас.
Разместите на форме текстовый бокс TextBox1 и в модуль формы добавьте следующий код:

Код: Выделить всё

Const MaskFiller As String = "__.__.__"
'
Private Sub TextBox1_Enter()
    With Me.TextBox1
        If Not (.Text Like "##.##.##") Then
           .Text = MaskFiller
        End If
        If Len(.Tag) = 0 Then
            Application.SendKeys "{INSERT}"
            .Tag = "-1"
        End If
    End With
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Me.Tag = vbNullString
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim iPos As Integer
    Dim iL As Integer
    Dim iR As Integer
    Dim s As String
    With Me.TextBox1
        s = .Text
        iPos = Int(.Tag) 'Позиция курсора
        Select Case iPos
            Case -1
                iPos = 0
                GoTo SetPos
            Case 0
                If KeyCode < Asc("0") Or KeyCode > Asc("3") Then
                    GoTo NavigateKey
                Else
                    Mid$(s, iPos + 1, 1) = Chr$(KeyCode)
                    iPos = 1
                End If
            Case 1
                Select Case Left$(.Text, 1)
                    Case "0"
                        iL = Asc("1")
                        iR = Asc("9")
                    Case "1", "2"
                        iL = Asc("0")
                        iR = Asc("9")
                    Case "3"
                        iL = Asc("0")
                        iR = Asc("1")
                End Select
                If KeyCode < iL Or KeyCode > iR Then
                    GoTo NavigateKey
                Else
                    Mid$(s, iPos + 1, 1) = Chr$(KeyCode)
                    iPos = 3
                End If
            Case 3
                If KeyCode = Asc("0") Or KeyCode = Asc("1") Then
                    Mid$(s, iPos + 1, 1) = Chr$(KeyCode)
                    iPos = 4
                Else
                    GoTo NavigateKey
                End If
            Case 4
                If Mid$(Me.TextBox1.Text, 4, 1) = "0" Then
                    iL = Asc("1")
                    iR = Asc("9")
                Else
                    iL = Asc("0")
                    iR = Asc("2")
                End If
                If KeyCode < iL Or KeyCode > iR Then
                    GoTo NavigateKey
                Else
                    Mid$(s, iPos + 1, 1) = Chr$(KeyCode)
                    iPos = 6
                End If
            Case 6, 7
                If KeyCode < Asc("0") Or KeyCode > Asc("9") Then
                    GoTo NavigateKey
                Else
                    Mid$(s, iPos + 1, 1) = Chr$(KeyCode)
                    iPos = IIf(iPos = 6, 7, 0)
                End If
        End Select
        GoTo Repaint
NavigateKey:
        Select Case KeyCode
            Case 37 'Left
                Select Case iPos
                    Case 1, 4, 7
                        iPos = iPos - 1
                    Case 3, 6
                        iPos = iPos - 2
                End Select
            Case 39 'Right
                Select Case iPos
                    Case 0, 3, 6
                        iPos = iPos + 1
                    Case 1, 4
                        iPos = iPos + 2
                End Select
            Case 27 'Esc
                iPos = 0
            Case 9  'Tab
                Exit Sub
        End Select
Repaint:
        KeyCode = 0
        .Text = s
SetPos:
        .SelStart = iPos
        .SelLength = 1
        .Tag = Format$(iPos, "0")
    End With
End Sub

В принципе можно проще если не перехватывать самому навигационные клавиши и использовать KeyPress вместо KeyDown.
SendKey так же оставлен для иллюстрации. И вместо вызовов ASC можно сразу писать их значения ;)
Кроме того этот пример демонстрирует как с помощью SelStart и SelLength сэмулировать в текстовом боксе курсор
режима замещения.
Допустимое количество дней для всех месяцев — 31 ;)
Можно при выходе из текстового бокса замещать дату на максимально допустимую
Посмотрите в формуме я публиковал ранее подпрограмму нориализации даты

Понравилась статья? Поделить с друзьями:
  • Масло гидравлическое мобил dte 10 excel 32
  • Маска ввода для textbox vba excel
  • Масло гидравлическое минеральное mobil dte 10 excel 32
  • Масло гидравлическое mobil dte 10 excel 32 характеристики
  • Маска ввода даты для excel