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

Вход

Регистрация

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

 

= Мир MS Excel/Выпадающее меню со списком, содержащим вводимые буквы. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выпадающее меню со списком, содержащим вводимые буквы. (Макросы/Sub)
Выпадающее меню со списком, содержащим вводимые буквы.
Sendex Дата: Пятница, 29.01.2016, 00:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем привет!

Искал что-то подобное обсуждавшееся, но не нашел.
В чем суть. Допустим есть список:
полотенце зеленое
полено дубовое
телефон новый
переполох в душе

В ячейке начинаем писать "пол" и тут же выпадает список со строками, в которых содержится эта комбинация:
ПОЛотенце зеленое
ПОЛено дубовое
переПОЛох в душе
Дописываем дальше, "поле" - остается для выбора одно Полено дубовое.

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

Искал что-то подобное обсуждавшееся, но не нашел.
В чем суть. Допустим есть список:
полотенце зеленое
полено дубовое
телефон новый
переполох в душе

В ячейке начинаем писать "пол" и тут же выпадает список со строками, в которых содержится эта комбинация:
ПОЛотенце зеленое
ПОЛено дубовое
переПОЛох в душе
Дописываем дальше, "поле" - остается для выбора одно Полено дубовое.

Подскажите варианты плз.
Спасибо

Автор - Sendex
Дата добавления - 29.01.2016 в 00:40
SLAVICK Дата: Пятница, 29.01.2016, 01:04 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Без примера - только ссылка на похожую тему
Наверное ближе будет Эта тема - там в примере нужно нажать кнопку найти.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеБез примера - только ссылка на похожую тему
Наверное ближе будет Эта тема - там в примере нужно нажать кнопку найти.

Автор - SLAVICK
Дата добавления - 29.01.2016 в 01:04
Wasilich Дата: Пятница, 29.01.2016, 11:14 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Видно надо, что то вроде этого! :)
К сообщению приложен файл: 7894097.rar (58.0 Kb)
 
Ответить
СообщениеВидно надо, что то вроде этого! :)

Автор - Wasilich
Дата добавления - 29.01.2016 в 11:14
Sendex Дата: Понедельник, 01.02.2016, 11:57 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, спасибо! Второй вариант - очень похоже на то что нужно, который с кнопкой "Найти"
Только он ищет совпадения по всем листам, а в моем случае нужно искать по определенному столбцу.
Подскажите пож, как именно указать конкретный диапазон?
Понимаю, что нужно заменить For Each sh In ActiveWorkbook.Sheets на столбец, но все криво выходит.
Заранее спасибо!

[vba]
Код
Private Sub TextBox1_Change()
Dim j As Long, i As Long, poisk As Range, iAdr$, LT%, sh As Worksheet
ListBox1.Clear
LT = Len(TextBox1.Value)
If LT = 0 Then Exit Sub
j = 0
iAdr = Sheets(1).UsedRange.Address
iAdr = Mid(iAdr, InStr(iAdr, ":") + 1)
For Each sh In ActiveWorkbook.Sheets
For Each poisk In sh.UsedRange
On Error Resume Next
If poisk Like "*" & TextBox1.Value & "*" Then
ListBox1.AddItem sh.Name & "!" & poisk.Address
ListBox1.List(j, 1) = poisk
j = j + 1
End If
Next
Next
End Sub
[/vba]
[moder]Оформляйте коды макросов спецтегами - кнопка # (поправил за Вас). И Правила форума почитайте.


Сообщение отредактировал _Boroda_ - Понедельник, 01.02.2016, 12:15
 
Ответить
СообщениеSLAVICK, спасибо! Второй вариант - очень похоже на то что нужно, который с кнопкой "Найти"
Только он ищет совпадения по всем листам, а в моем случае нужно искать по определенному столбцу.
Подскажите пож, как именно указать конкретный диапазон?
Понимаю, что нужно заменить For Each sh In ActiveWorkbook.Sheets на столбец, но все криво выходит.
Заранее спасибо!

[vba]
Код
Private Sub TextBox1_Change()
Dim j As Long, i As Long, poisk As Range, iAdr$, LT%, sh As Worksheet
ListBox1.Clear
LT = Len(TextBox1.Value)
If LT = 0 Then Exit Sub
j = 0
iAdr = Sheets(1).UsedRange.Address
iAdr = Mid(iAdr, InStr(iAdr, ":") + 1)
For Each sh In ActiveWorkbook.Sheets
For Each poisk In sh.UsedRange
On Error Resume Next
If poisk Like "*" & TextBox1.Value & "*" Then
ListBox1.AddItem sh.Name & "!" & poisk.Address
ListBox1.List(j, 1) = poisk
j = j + 1
End If
Next
Next
End Sub
[/vba]
[moder]Оформляйте коды макросов спецтегами - кнопка # (поправил за Вас). И Правила форума почитайте.

Автор - Sendex
Дата добавления - 01.02.2016 в 11:57
SLAVICK Дата: Понедельник, 01.02.2016, 12:29 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
а в моем случае нужно искать по определенному столбцу.

Попробуйте так:
[vba]
Код
Private Sub TextBox1_Change()
Dim j As Long, i As Long, poisk As Range, iAdr$, LT%, sh As Worksheet
ListBox1.Clear
LT = Len(TextBox1.Value)
If LT = 0 Then Exit Sub
j = 0
iAdr = Sheets(1).UsedRange.Address
iAdr = Mid(iAdr, InStr(iAdr, ":") + 1)
Set sh = ActiveSheet
For Each poisk In Range("d1:d100")
On Error Resume Next
    If poisk Like "*" & TextBox1.Value & "*" Then
    ListBox1.AddItem sh.Name & "!" & poisk.Address
    ListBox1.List(j, 1) = poisk
    j = j + 1
    End If
Next
End Sub
[/vba]
здесь будет поиск в диапазоне Range("d1:d100").
Лучше указывать не весь столбец а диапазон(можно с запасом), иначе будет тормозить.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
а в моем случае нужно искать по определенному столбцу.

Попробуйте так:
[vba]
Код
Private Sub TextBox1_Change()
Dim j As Long, i As Long, poisk As Range, iAdr$, LT%, sh As Worksheet
ListBox1.Clear
LT = Len(TextBox1.Value)
If LT = 0 Then Exit Sub
j = 0
iAdr = Sheets(1).UsedRange.Address
iAdr = Mid(iAdr, InStr(iAdr, ":") + 1)
Set sh = ActiveSheet
For Each poisk In Range("d1:d100")
On Error Resume Next
    If poisk Like "*" & TextBox1.Value & "*" Then
    ListBox1.AddItem sh.Name & "!" & poisk.Address
    ListBox1.List(j, 1) = poisk
    j = j + 1
    End If
Next
End Sub
[/vba]
здесь будет поиск в диапазоне Range("d1:d100").
Лучше указывать не весь столбец а диапазон(можно с запасом), иначе будет тормозить.

Автор - SLAVICK
Дата добавления - 01.02.2016 в 12:29
Wasilich Дата: Понедельник, 01.02.2016, 15:33 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Sendex, я так понял, у Вас WinRAR-a нет? Или не подходит? Считаю, отзываться надо бы в любом случае.
На случай отсутствия архиватора, сократил размер примера.
К сообщению приложен файл: __UserForm22.xls (45.0 Kb)
 
Ответить
СообщениеSendex, я так понял, у Вас WinRAR-a нет? Или не подходит? Считаю, отзываться надо бы в любом случае.
На случай отсутствия архиватора, сократил размер примера.

Автор - Wasilich
Дата добавления - 01.02.2016 в 15:33
Sendex Дата: Четверг, 04.02.2016, 20:03 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Wasilic, у меня на Ваш первый файл антивирь ругнулся, поэтому после того что уже SLAVICK предложил, не стал больше пробовать.
Сейчас посмотрел, это максимально упрощенный вариант, тоже возьму на заметку. В любом случае - большое спасибо за отклик! И сорри, что не вовремя.

SLAVICK, спасибо за оба варианта! И отдельное огромное спасибо за доработку, все работает как надо!
 
Ответить
СообщениеWasilic, у меня на Ваш первый файл антивирь ругнулся, поэтому после того что уже SLAVICK предложил, не стал больше пробовать.
Сейчас посмотрел, это максимально упрощенный вариант, тоже возьму на заметку. В любом случае - большое спасибо за отклик! И сорри, что не вовремя.

SLAVICK, спасибо за оба варианта! И отдельное огромное спасибо за доработку, все работает как надо!

Автор - Sendex
Дата добавления - 04.02.2016 в 20:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выпадающее меню со списком, содержащим вводимые буквы. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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