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

Вход

Регистрация

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

 

= Мир MS Excel/запрет ввода одинаковых значений в TextBox - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » запрет ввода одинаковых значений в TextBox
запрет ввода одинаковых значений в TextBox
AKSENOV048 Дата: Четверг, 08.09.2011, 19:03 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Здравствуйте! как можно запретить ввод одинаковых значений в TextBox в форме?
в форме есть текстбокс в который вносится текст далее по нажатию кнопки "ок" это значение вставляется в пустую ячейку в столбце "В".
как я это вижу: вводим значение в текстбокс, затем переводим фокус на следующий элемент формы, если в столбце "В" такое значение уже есть, то появляется msgbox с уведомлением об ошибке и просьбе ввести другое название!
 
Ответить
СообщениеЗдравствуйте! как можно запретить ввод одинаковых значений в TextBox в форме?
в форме есть текстбокс в который вносится текст далее по нажатию кнопки "ок" это значение вставляется в пустую ячейку в столбце "В".
как я это вижу: вводим значение в текстбокс, затем переводим фокус на следующий элемент формы, если в столбце "В" такое значение уже есть, то появляется msgbox с уведомлением об ошибке и просьбе ввести другое название!

Автор - AKSENOV048
Дата добавления - 08.09.2011 в 19:03
AKSENOV048 Дата: Четверг, 08.09.2011, 19:27 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

разобрался
Private Sub TextBox2_Change()
With Sheets(1)
Set r = .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp))
End With
Set x = r.Find(what:=TextBox2.Value, LookAt:=xlWhole, LookIn:=xlValues)
If Not x Is Nothing Then
MsgBox ("ошибочка, " & TextBox2.Value & " уже существует")
End If
End Sub


Сообщение отредактировал AKSENOV048 - Четверг, 08.09.2011, 19:32
 
Ответить
Сообщениеразобрался
Private Sub TextBox2_Change()
With Sheets(1)
Set r = .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp))
End With
Set x = r.Find(what:=TextBox2.Value, LookAt:=xlWhole, LookIn:=xlValues)
If Not x Is Nothing Then
MsgBox ("ошибочка, " & TextBox2.Value & " уже существует")
End If
End Sub

Автор - AKSENOV048
Дата добавления - 08.09.2011 в 19:27
AKSENOV048 Дата: Четверг, 08.09.2011, 19:32 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

почему приходится нажимать два раза на "ок" в msgbox?
и можно ли увеличить шрифт?


Сообщение отредактировал AKSENOV048 - Четверг, 08.09.2011, 19:38
 
Ответить
Сообщениепочему приходится нажимать два раза на "ок" в msgbox?
и можно ли увеличить шрифт?

Автор - AKSENOV048
Дата добавления - 08.09.2011 в 19:32
AKSENOV048 Дата: Пятница, 09.09.2011, 10:31 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Шрифт увеличить в MsgBox.
Вот пример!
(нажимайте на желтую ячейку)
К сообщению приложен файл: 0816713.xls (39.0 Kb)
 
Ответить
СообщениеШрифт увеличить в MsgBox.
Вот пример!
(нажимайте на желтую ячейку)

Автор - AKSENOV048
Дата добавления - 09.09.2011 в 10:31
Hugo Дата: Пятница, 09.09.2011, 10:48 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Чтоб шрифт увеличить - это нужно вместо msgbox свою форму рисовать.
А два раза - потому что перевод регистра тоже срабатывает как TextBox1_Change. Нужно или сразу в верхнем вводить, или доп.условие вводить - типа если до перемены регистра и после перемены значения разные, то не искать, иначе искать.

Вот вроде этого (даже без else обошлось):
Code
Private Sub TextBox1_Change()
Dim a$
a = Me.TextBox1
Me.TextBox1 = UCase(Me.TextBox1)   'верхний регистр
If a = Me.TextBox1 Then
With Sheets(1)
Set r = .Range(.[A2], .Range("A" & .Rows.Count).End(xlUp))
End With
Set x = r.Find(what:=TextBox1.Value, LookAt:=xlWhole, MatchCase:=False)
If Not x Is Nothing Then
MsgBox ("Внимание! " & TextBox1.Value & " уже существует")
End If
End If
End Sub


Такс, ещё недоработка - после
MsgBox ("Внимание! " & TextBox1.Value & " уже существует")
я бы добавил
Me.TextBox1 = Left(Me.TextBox1, Len(Me.TextBox1) - 1)
Иначе после месиджбокса можно нажать ОК и повторное значение занесётся на лист.

Хотя в целом - такую проверку нужно делать после нажатия ОК - т.к. иначе или можно занести повторное значение, как в коде выше, или невозможно занести значение длиннее уже существующего, как с моей добавкой ниже sad


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧтоб шрифт увеличить - это нужно вместо msgbox свою форму рисовать.
А два раза - потому что перевод регистра тоже срабатывает как TextBox1_Change. Нужно или сразу в верхнем вводить, или доп.условие вводить - типа если до перемены регистра и после перемены значения разные, то не искать, иначе искать.

Вот вроде этого (даже без else обошлось):
Code
Private Sub TextBox1_Change()
Dim a$
a = Me.TextBox1
Me.TextBox1 = UCase(Me.TextBox1)   'верхний регистр
If a = Me.TextBox1 Then
With Sheets(1)
Set r = .Range(.[A2], .Range("A" & .Rows.Count).End(xlUp))
End With
Set x = r.Find(what:=TextBox1.Value, LookAt:=xlWhole, MatchCase:=False)
If Not x Is Nothing Then
MsgBox ("Внимание! " & TextBox1.Value & " уже существует")
End If
End If
End Sub


Такс, ещё недоработка - после
MsgBox ("Внимание! " & TextBox1.Value & " уже существует")
я бы добавил
Me.TextBox1 = Left(Me.TextBox1, Len(Me.TextBox1) - 1)
Иначе после месиджбокса можно нажать ОК и повторное значение занесётся на лист.

Хотя в целом - такую проверку нужно делать после нажатия ОК - т.к. иначе или можно занести повторное значение, как в коде выше, или невозможно занести значение длиннее уже существующего, как с моей добавкой ниже sad

Автор - Hugo
Дата добавления - 09.09.2011 в 10:48
_Boroda_ Дата: Пятница, 09.09.2011, 11:25 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А я бы написал примерно так:
Code
Private Sub CommandButton1_Click()
With Sheets(1)
       Set r = .Range(.[A2], .Range("A" & .Rows.Count).End(xlUp))
End With
Set x = r.Find(what:=TextBox1.Value, LookAt:=xlWhole)
If Not x Is Nothing Then
Beep
       MsgBox ("Внимание! " & TextBox1.Value & " уже существует")
       Exit Sub
End If
Selection.Value = Me.TextBox1
Unload Me
End Sub

Private Sub TextBox1_Change()
Me.TextBox1 = UCase(Me.TextBox1)   'верхний регистр
End Sub


звук
Всунь туда Beep


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА я бы написал примерно так:
Code
Private Sub CommandButton1_Click()
With Sheets(1)
       Set r = .Range(.[A2], .Range("A" & .Rows.Count).End(xlUp))
End With
Set x = r.Find(what:=TextBox1.Value, LookAt:=xlWhole)
If Not x Is Nothing Then
Beep
       MsgBox ("Внимание! " & TextBox1.Value & " уже существует")
       Exit Sub
End If
Selection.Value = Me.TextBox1
Unload Me
End Sub

Private Sub TextBox1_Change()
Me.TextBox1 = UCase(Me.TextBox1)   'верхний регистр
End Sub


звук
Всунь туда Beep

Автор - _Boroda_
Дата добавления - 09.09.2011 в 11:25
AKSENOV048 Дата: Пятница, 09.09.2011, 11:29 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Спасибо за помощь! а можно как то сделать чтобы при появлении msgbox звук ошибки воспроизводился?
 
Ответить
СообщениеСпасибо за помощь! а можно как то сделать чтобы при появлении msgbox звук ошибки воспроизводился?

Автор - AKSENOV048
Дата добавления - 09.09.2011 в 11:29
AKSENOV048 Дата: Пятница, 09.09.2011, 11:43 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Вот спасибо! даже и не знал о таком.
 
Ответить
СообщениеВот спасибо! даже и не знал о таком.

Автор - AKSENOV048
Дата добавления - 09.09.2011 в 11:43
Hugo Дата: Пятница, 09.09.2011, 11:46 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Или просто тупо
MsgBox ("Внимание! " & TextBox1.Value & " уже существует"), vbCritical


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеИли просто тупо
MsgBox ("Внимание! " & TextBox1.Value & " уже существует"), vbCritical

Автор - Hugo
Дата добавления - 09.09.2011 в 11:46
AKSENOV048 Дата: Пятница, 09.09.2011, 11:56 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Спасибо! чтобы ваши варианты не пропадали сделаю в одной форме как HUGO, в другой как Boroda!))
 
Ответить
СообщениеСпасибо! чтобы ваши варианты не пропадали сделаю в одной форме как HUGO, в другой как Boroda!))

Автор - AKSENOV048
Дата добавления - 09.09.2011 в 11:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » запрет ввода одинаковых значений в TextBox
  • Страница 1 из 1
  • 1
Поиск:

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