Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ограничение вводимых значений в компонент Text, Excel 
:(
    Опции темы
olga90
Дата 3.3.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



Мне для текстового компонента Text нужно задать следующюю маску:

ХХ.ХХ.У

где ХХ должны принимать значения 0-20
а У только букву "а", "б", "в" или "р"

как это реализовать? СТОРОННИЕ компоненты не предлагать - нужно именно на стандартном Text
PM MAIL   Вверх
Akina
Дата 3.3.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Обработайте его KeyPress, обнуляя неправильный ввод


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
olga90
Дата 4.3.2008, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



дайте пожалуйста пример
PM MAIL   Вверх
Akina
Дата 4.3.2008, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



А поиском пользоваться религиЯ не позволяет? ну например http://forum.vingrad.ru/forum/topic-45058.html


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
olga90
Дата 5.3.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



Код

Dim Condition As Boolean

Private Sub CommandButton1_Click()
    Condition = TextBox1.Text Like "##.##[а,б,в,р]"
    If Condition Then MsgBox "ДА" Else MsgBox "НЕТ"
End Sub



если пишу 12.10а, то выдается ДА но если 4.15а или 2.12 то выдает НЕТ 

а мне нужно ХХ.ХХ.У, где ХХ должны принимать значения 0-20, а У только букву "а", "б", "в" или "р"

как быть?
PM MAIL   Вверх
Akina
Дата 5.3.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Например
Код

Condition = (TextBox1.Text Like "##.##.[абвр]") OR (TextBox1.Text Like "#.##.[абвр]")



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
olga90
Дата 6.3.2008, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



а как чтобы ## было можно вводить числа в диапозоне 0-20 ?
PM MAIL   Вверх
Akina
Дата 6.3.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Никак. Возможности Like в этом отношении очень ограничены. Можете попробовать использовать RegExp.Match - вот у него таких ограничений нет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
olga90
Дата 7.3.2008, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



Цитата(Akina @  6.3.2008,  07:46 Найти цитируемый пост)
 Можете попробовать использовать RegExp.Match - вот у него таких ограничений нет.

а как это реализуется через регулярные выражения. Как там это делается. Я такое первый раз слышу
PM MAIL   Вверх
Akina
Дата 7.3.2008, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Отправляйтесь в MSDN (если есть - в локальный), в раздел по VBScript, там найдите объект RegExp и проштудируйте описание его свойства Pattern. Потом посмотрите примеры.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
olga90
Дата 8.3.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



спасибо

Это сообщение отредактировал(а) olga90 - 8.3.2008, 11:53
PM MAIL   Вверх
mihanik
Дата 12.3.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Посмотри это...

Может, поможет...

Код

'********************************************************************
'* Модуль, организующий работу с объектом RegExp.
'* Организованы несколько глобальных переменных,
'* хранящих все режимы работы приведённых здесь функций и процедур.
'*
'********************************************************************

Option Explicit



Global MyRegExpPattern As String
Global MyRegExpMultiLine As Boolean
Global MyRegExpGlobal As Boolean
Global MyRegExpIgnoreCase As Boolean


'********************************************************************
'*
'* Процедура : SetRegExpProperties
'* Описание  : Устанавливает начальные значения объекта MyRegExp
'*  Вход     :
'*  Выход    : Нет
'********************************************************************
Private Sub SetRegExpProperties(ByRef MyRegExp As Object)

    MyRegExp.Pattern = MyRegExpPattern
    MyRegExp.MultiLine = MyRegExpMultiLine
    MyRegExp.Global = MyRegExpGlobal
    MyRegExp.IgnoreCase = MyRegExpIgnoreCase
    
End Sub


'********************************************************************
'*
'* Функция  : blnTestString (приватная)
'* Описание : Определяет соответствует ли строка шаблону
'* Вход     : strString - строка
'*            strPath   - шаблон (регулярное выражение)
'* Выход    : true - соответствует шаблону; false - не соответствует шаблону
'*
'********************************************************************
Private Function blnTestString(ByVal strString As String, ByVal strPath As String) As Boolean

Dim RegEx As Object

' Создаём экземпляр объекта RegExp
    Set RegEx = CreateObject("VBScript.RegExp")

' Настраиваем режимы работы регулярного выражения
    RegEx.IgnoreCase = True ' Осуществляем поиск игнорируя размер букв
    RegEx.Global = False    ' Ищем до первого совпадения
    RegEx.MultiLine = False ' Текст не является многострочным
    RegEx.Pattern = strPath ' Устанавливаем шаблон регулярного выражения
  
' Тестируем строку на соответствие шаблону
    blnTestString = RegEx.Test(strString)

' Уничтожаем экземпляр объекта RegExp
    Set RegEx = Nothing

End Function

'********************************************************************
'*
'* Функция  : strExtractString (приватная)
'* Описание : Выделяет из строки подстроку, удовлетворяющую шаблону
'* Вход     : strString - строка
'*            strPath   - шаблон
'* Выход    : строка соответствущая шаблону
'*
'********************************************************************
Private Function strExtractString(ByVal strString As String, ByVal strPath As String) As String
Dim RegEx As Object         ' Экземпляр регулярного выражения
Dim colMatches  As Object   ' Коллекция совпадений
Dim aMatch As Object        ' один из совпавших образцов

' Создаём экземпляр объекта RegExp
    Set RegEx = CreateObject("VBScript.RegExp")

' Настраиваем режимы работы регулярного выражения
    RegEx.IgnoreCase = True ' Осуществляем поиск игнорируя размер букв
    RegEx.Global = False    ' Ищем до первого совпадения
    RegEx.MultiLine = False ' Текст не является многострочным
    RegEx.Pattern = strPath ' Устанавливаем шаблон регулярного выражения
  
' Тестируем строку на соответствие шаблону
    Set colMatches = RegEx.Execute(strString)
    For Each aMatch In colMatches
        strExtractString = aMatch.Value
        Exit For
    Next

' Уничтожаем экземпляры объектов
    Set colMatches = Nothing
    Set RegEx = Nothing

End Function





--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.