Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2013, 22:26   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Private Sub TextBox1_Change()
      ListBox1.Clear
'при отсутствии символов для поиска - выход
   If Len(TextBox1.Value) = 0 Then
   ListBox1.Visible = False
   Exit Sub
   End If
   ListBox1.Visible = True
'и т.д....
В свойствах поставить Visible = False
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.05.2013, 22:39   #12
ssg
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 12
Радость

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
Private Sub TextBox1_Change()
      ListBox1.Clear
'при отсутствии символов для поиска - выход
   If Len(TextBox1.Value) = 0 Then
   ListBox1.Visible = False
   Exit Sub
   End If
   ListBox1.Visible = True
'и т.д....
В свойствах поставить Visible = False
Спасибо, буду пробывать!!!
ssg вне форума Ответить с цитированием
Старый 10.05.2013, 19:31   #13
ssg
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
Private Sub TextBox1_Change()
      ListBox1.Clear
'при отсутствии символов для поиска - выход
   If Len(TextBox1.Value) = 0 Then
   ListBox1.Visible = False
   Exit Sub
   End If
   ListBox1.Visible = True
'и т.д....
В свойствах поставить Visible = False
Спасибо,попробывал (немного под себя переделал).
2 вопроса, если можно:

1. Как сделать так, чтоы поиск вводимых символов прохдил только в начале слов, а не где угодно (как сейчас). Т.е. если я ввожу "во", то в список попадают слова:
ворона, рвота, клево и т.д. А надо, чтобы в списке было только: "ворона"
2. Не могу правильно выйти из ввода текста в поле textbox. Ввожу слово, которого нет, хочу по событию (нажатие клавиши Enter) закончить ввод и скрыть listbox.
Для этого использую код:

Private Sub TextBox2_Enter()
ListBox1.Visible = False
End Sub

Но не работает (вероятно потому, что Enter воспринимается как ввод очередного символа - и процесс повторяется).
Срабатывет, если я нажимаю Enter, а затем щелкаю мышкой в поле textbox.

Т.е. интересует, как выйти (твой пример поиск по буквам) из процедуры, если хочешь закончить ввод нажатием клавиши "Enter".

Спасибо.
ssg вне форума Ответить с цитированием
Старый 10.05.2013, 20:22   #14
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

1.
Код:
        If InStr(1, UCase(Cells(i, 1)), UCase(TextBox1.Value)) > 0 Then
замените на
Код:
        If UCase(TextBox1.Value) Like UCase(Cells(i, 1)) & "*" Then
2.
Код:
Private Sub TextBox1_AfterUpdate()
    MsgBox 1
End Sub
вот вместо MsgBox и делайте что задумали.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.05.2013, 20:28   #15
ssg
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 12
По умолчанию

Спасибо, буду пробывать.
ssg вне форума Ответить с цитированием
Старый 10.05.2013, 20:49   #16
ssg
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
1.
Код:
        If InStr(1, UCase(Cells(i, 1)), UCase(TextBox1.Value)) > 0 Then
замените на
Код:
        If UCase(TextBox1.Value) Like UCase(Cells(i, 1)) & "*" Then
2.
Код:
Private Sub TextBox1_AfterUpdate()
    MsgBox 1
End Sub
вот вместо MsgBox и делайте что задумали.
Попробывал.
1. Private Sub TextBox1_AfterUpdate() решило проблему - спасибо.
2. А вот замена строки поиска испортила ситуацию.
При вводе второй буквы - "во"
появляется совем неправильный список. Т.е. проблема не решена. Может еще какие идеи есть?
ssg вне форума Ответить с цитированием
Старый 10.05.2013, 21:18   #17
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Сообщение от ssg Посмотреть сообщение
А вот замена строки поиска испортила ситуацию.
Код:
If InStr(1, UCase(Cells(i, 1)), UCase(TextBox1.Value)) > 0 Then
Замените на
Код:
If InStr(1, Cells(i, 1), TextBox1.Value, vbTextCompare) = 1 Then
или на
Код:
If UCase(Cells(i, 1)) Like UCase(TextBox1.Value) & "*" Then
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 10.05.2013, 21:30   #18
ssg
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 12
По умолчанию

Попробывал: If InStr(1, Cells(i, 2), TextBox2.Value, vbTextCompare) = 1 Then

Работает, как хотелось.
Спасибо.

Еще вопрос:
Если при открытом listbox, я кликаю в этом поле мышкой, получаю сообщение:

Run-time error '-2147418113 (8000ffff)':

Could not set the Visible property. Unexpected call method or property access.

И Excel вылетает.

Debag показывает, что останов происходит в:

Private Sub TextBox2_AfterUpdate()
ListBox1.Visible = False
End Sub

на ListBox1.Visible = False

Можно как то помочь?

Последний раз редактировалось ssg; 10.05.2013 в 21:33.
ssg вне форума Ответить с цитированием
Старый 10.05.2013, 21:45   #19
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как-то можно, но думаю пора Вам показать файл.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
userform 0creator0 Microsoft Office Excel 0 07.12.2011 22:41
userform alegl Помощь студентам 1 16.12.2010 00:58
UserForm i777 Microsoft Office Excel 2 17.11.2010 02:04
Сохранение и загрузка в файл текстовых значений и значений типа Boolean krikaved Общие вопросы Delphi 1 16.03.2010 07:53
Автозавершение... Busine2009 Microsoft Office Excel 2 02.07.2009 05:01