Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Ввод кода товара в поле текстбокса через запятую - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ввод кода товара в поле текстбокса через запятую (Макросы/Sub)
Ввод кода товара в поле текстбокса через запятую
parovoznik Дата: Пятница, 03.02.2017, 12:52 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
На форме размещен текстбокс для ввода кода товаров. Разрешен ввод : 2 буквы заглавные Английские, один пробел и шесть цифр. остальные символы запрещены. Сейчас в поле можно ввести только один код.
Как скорректировать код ,что бы можно было ввести неограниченное количество кода товара в поле текстбокса через запятую.
К сообщению приложен файл: __.xlsm (24.4 Kb)
 
Ответить
СообщениеДобрый день.
На форме размещен текстбокс для ввода кода товаров. Разрешен ввод : 2 буквы заглавные Английские, один пробел и шесть цифр. остальные символы запрещены. Сейчас в поле можно ввести только один код.
Как скорректировать код ,что бы можно было ввести неограниченное количество кода товара в поле текстбокса через запятую.

Автор - parovoznik
Дата добавления - 03.02.2017 в 12:52
Kamikadze_N Дата: Пятница, 03.02.2017, 13:16 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
parovoznik, я может конечно чего не понял, но у вас и так в текст бокс можно сколько много угодно ввести кода товара через запятую и при нажатии перенести на форму этот текст в таблице отобразится
 
Ответить
Сообщениеparovoznik, я может конечно чего не понял, но у вас и так в текст бокс можно сколько много угодно ввести кода товара через запятую и при нажатии перенести на форму этот текст в таблице отобразится

Автор - Kamikadze_N
Дата добавления - 03.02.2017 в 13:16
parovoznik Дата: Пятница, 03.02.2017, 13:38 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Kamikadze_N, набирается только один код и запятая не набирается.
 
Ответить
СообщениеKamikadze_N, набирается только один код и запятая не набирается.

Автор - parovoznik
Дата добавления - 03.02.2017 в 13:38
Manyasha Дата: Пятница, 03.02.2017, 14:45 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
parovoznik, здравствуйте. А может проверять не при каждом нажатии клавиш, а перед записью на лист?
[vba]
Код
Private Sub B_ДобавитьнаЛист_Click()
    Dim LastRow As Long
    Dim objMatches As Object, objMatch As Object, temp, el, k%
    k = 0
    With CreateObject("VBScript.RegExp")
        .Global = True: .ignoreCase = False
        .Pattern = "^[A-Z]{2}\s\d{6}$"
        temp = Split(Trim(TextBox2.Value), ",")
        For Each el In temp
            k = k + 1
            If .test(el) = False Then MsgBox "Код №" & k & " не соответствует шаблону", vbCritical: Exit Sub
        Next el
    End With
    With Sheets("отчет")
          LastRow = .Cells(Rows.Count, 2).End(xlUp).Row
          Cells(LastRow + 1, 2) = Trim(Me.TextBox2.Value)
          Range(.Cells(6, 2), .Cells(LastRow + 1, 2)).Borders.LineStyle = xlContinuous ' обрамление ячеек
    End With
Unload Me
End Sub
[/vba]
К сообщению приложен файл: _1.xlsm (26.5 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеparovoznik, здравствуйте. А может проверять не при каждом нажатии клавиш, а перед записью на лист?
[vba]
Код
Private Sub B_ДобавитьнаЛист_Click()
    Dim LastRow As Long
    Dim objMatches As Object, objMatch As Object, temp, el, k%
    k = 0
    With CreateObject("VBScript.RegExp")
        .Global = True: .ignoreCase = False
        .Pattern = "^[A-Z]{2}\s\d{6}$"
        temp = Split(Trim(TextBox2.Value), ",")
        For Each el In temp
            k = k + 1
            If .test(el) = False Then MsgBox "Код №" & k & " не соответствует шаблону", vbCritical: Exit Sub
        Next el
    End With
    With Sheets("отчет")
          LastRow = .Cells(Rows.Count, 2).End(xlUp).Row
          Cells(LastRow + 1, 2) = Trim(Me.TextBox2.Value)
          Range(.Cells(6, 2), .Cells(LastRow + 1, 2)).Borders.LineStyle = xlContinuous ' обрамление ячеек
    End With
Unload Me
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 03.02.2017 в 14:45
Wasilich Дата: Пятница, 03.02.2017, 16:12 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
А я так схимичил, вроде работает :)
[vba]
Код
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  On Local Error Resume Next
  Dim i As Long
  Dim j As Long
  Static x&
  i = Len(TextBox2) + 1
  j = KeyAscii
  If i = 10 + x Then
    If j = 44 Then
      TextBox2 = TextBox2 & Chr(44)
      x = i
    End If
    KeyAscii = 0
    Exit Sub
  End If
  If i < 3 + x Then If Not IsNumeric(Chr(j)) Then TextBox2 = TextBox2 & UCase(Chr(j))
  If i = 3 + x Then If j = 32 Then TextBox2 = TextBox2 & Chr(j)
  If i > 3 + x Then If IsNumeric(Chr(j)) Then TextBox2 = TextBox2 & Chr(j)
  KeyAscii = 0
End Sub
[/vba]
 
Ответить
СообщениеА я так схимичил, вроде работает :)
[vba]
Код
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  On Local Error Resume Next
  Dim i As Long
  Dim j As Long
  Static x&
  i = Len(TextBox2) + 1
  j = KeyAscii
  If i = 10 + x Then
    If j = 44 Then
      TextBox2 = TextBox2 & Chr(44)
      x = i
    End If
    KeyAscii = 0
    Exit Sub
  End If
  If i < 3 + x Then If Not IsNumeric(Chr(j)) Then TextBox2 = TextBox2 & UCase(Chr(j))
  If i = 3 + x Then If j = 32 Then TextBox2 = TextBox2 & Chr(j)
  If i > 3 + x Then If IsNumeric(Chr(j)) Then TextBox2 = TextBox2 & Chr(j)
  KeyAscii = 0
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 03.02.2017 в 16:12
Kamikadze_N Дата: Пятница, 03.02.2017, 16:22 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Или вот так тоже работает, а первый раз я на код не посмотрел прост вставил данные из шаблона, думал так и задумано что бы копирование работало
К сообщению приложен файл: 6986850.xlsm (25.2 Kb)
 
Ответить
СообщениеИли вот так тоже работает, а первый раз я на код не посмотрел прост вставил данные из шаблона, думал так и задумано что бы копирование работало

Автор - Kamikadze_N
Дата добавления - 03.02.2017 в 16:22
parovoznik Дата: Пятница, 03.02.2017, 16:22 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Wasilich,Manyasha,Kamikadze_N,СПАСИБО - все варианты работают hands hands :hands:


Сообщение отредактировал parovoznik - Пятница, 03.02.2017, 16:53
 
Ответить
СообщениеWasilich,Manyasha,Kamikadze_N,СПАСИБО - все варианты работают hands hands :hands:

Автор - parovoznik
Дата добавления - 03.02.2017 в 16:22
Kamikadze_N Дата: Пятница, 03.02.2017, 16:25 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Manyasha, а что касается проверке при каждом вводе отдельного элемента, я так понял это как раз таки фишка (типо защита от дурака). Для того что бы ускорить ввод данных, то есть если в первом артикуле ошибся а ввел уже в строку символов 50, что бы не искать потом ошибку и время на это не тратить
 
Ответить
СообщениеManyasha, а что касается проверке при каждом вводе отдельного элемента, я так понял это как раз таки фишка (типо защита от дурака). Для того что бы ускорить ввод данных, то есть если в первом артикуле ошибся а ввел уже в строку символов 50, что бы не искать потом ошибку и время на это не тратить

Автор - Kamikadze_N
Дата добавления - 03.02.2017 в 16:25
RAN Дата: Суббота, 04.02.2017, 12:30 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 32, 44, 65 To 90
    Case 97 To 122
        KeyAscii = KeyAscii - 32
    Case Else
        KeyAscii = 0
    End Select
End Sub
[/vba]
Или я что-то не понял?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 32, 44, 65 To 90
    Case 97 To 122
        KeyAscii = KeyAscii - 32
    Case Else
        KeyAscii = 0
    End Select
End Sub
[/vba]
Или я что-то не понял?

Автор - RAN
Дата добавления - 04.02.2017 в 12:30
parovoznik Дата: Суббота, 04.02.2017, 15:49 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
RAN, после набора двух букв должны прописываться цифры,т.е :GJ 1238907, DF 123456 и т.д.
 
Ответить
СообщениеRAN, после набора двух букв должны прописываться цифры,т.е :GJ 1238907, DF 123456 и т.д.

Автор - parovoznik
Дата добавления - 04.02.2017 в 15:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ввод кода товара в поле текстбокса через запятую (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!