Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: AlexSyr
А я для себя использую:

'Проверяет введенное в текстовое поле (ctlIN - ссылка на объект TextBox) значения на  соответствие:
'    WhatIN = Dig - цифрам
'                      Dec - цифрам (+ "."-точка и ","-запятая)
'                      Chr - буквам
'    LenIN = MAX длина вводимой строки
'    FormatIN = Upp - перевод строки в верхний регистр
'                         Lwr - перевод строки в нижний регистр
'Возвращает позицию указателя курсора
Public Function CheckInput(ctlIN, WhatIN, Optional LenIN, Optional FormatIN)
  Dim strTmp As String
  
  strTmp = Mid(ctlIN.Text, ctlIN.SelStart, 1)

  'Если был удален первый элемент строки, то SelStart будет = 0, и ничего не проверяем
  If ctlIN.SelStart <> 0 Then
    'Проверка на длину строки
    If IsMissing(LenIN) = False Then   'Задано значение длины
      If Len(ctlIN.Text) > LenIN Then
        Resp = MsgBox("В данное поле РАЗРЕШЕНО вводить" & vbCrLf & _
                      "ТОЛЬКО " & LenIN & " символ(а/ов)", vbCritical, "ОШИБКА")
        'Именно сначала сохраняем позицию курсора, а затем изменяем значение поля
        '  Иначе позиция курсора собьется
        CheckInput = ctlIN.SelStart - 1
        ctlIN.Value = Mid(ctlIN.Text, 1, ctlIN.SelStart - 1) & Mid(ctlIN.Text, ctlIN.SelStart + 1)
        Exit Function
      End If
    End If
    
    'Проверка на Цифры/Буквы
    If WhatIN = "Dig" Then          'Проверка на цифры
      If IsNumeric(strTmp) = False Then
        Resp = MsgBox("Можно вводить ТОЛЬКО ЦИФРЫ", vbCritical, "ОШИБКА")
        CheckInput = ctlIN.SelStart - 1
        ctlIN.Value = Mid(ctlIN.Text, 1, ctlIN.SelStart - 1) & Mid(ctlIN.Text, ctlIN.SelStart + 1)
      Else
        CheckInput = ctlIN.SelStart
      End If
    ElseIf WhatIN = "Dec" Then          'Проверка на цифры (+ "."-точка и ","-запятая)
      If IsNumeric(strTmp) = False And strTmp <> "." And strTmp <> "," Then
        Resp = MsgBox("Можно вводить ТОЛЬКО ЦИФРЫ, ТОЧКУ или ЗАПЯТУЮ", vbCritical, "ОШИБКА")
        CheckInput = ctlIN.SelStart - 1
        ctlIN.Value = Mid(ctlIN.Text, 1, ctlIN.SelStart - 1) & Mid(ctlIN.Text, ctlIN.SelStart + 1)
      Else
        CheckInput = ctlIN.SelStart
      End If
    ElseIf WhatIN = "Chr" Then      'Проверка на буквы
      If IsNumeric(strTmp) = True Then
        Resp = MsgBox("Можно вводить ТОЛЬКО БУКВЫ", vbCritical, "ОШИБКА")
        CheckInput = ctlIN.SelStart - 1
        ctlIN.Value = Mid(ctlIN.Text, 1, ctlIN.SelStart - 1) & Mid(ctlIN.Text, ctlIN.SelStart + 1)
      Else
        CheckInput = ctlIN.SelStart
        'Форматирование строки
        If IsMissing(FormatIN) = False Then                   'Задано значение форматирования
          If FormatIN = "Upp" Then                                     'Перевод в верхний регистр
            ctlIN.Value = StrConv(ctlIN.Text, vbUpperCase)
          ElseIf FormatIN = "Lwr" Then                              'Перевод в нижний регистр
            ctlIN.Value = StrConv(ctlIN.Text, vbLowerCase)
          End If
        End If
      End If
    End If
  End If
End Function

И вызов:

Private Sub TextFld_Change()
  'Проверяем введенное значение на цифру и длину 3 знака
  Me.TextFld.SelStart = CheckInput(Me.TextFld, "Dig", 3)
End Sub

Кому как, а мне так удобнее


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.