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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск значений в базе по первым буквам при вводе на листе - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск значений в базе по первым буквам при вводе на листе (Макросы/Sub)
Поиск значений в базе по первым буквам при вводе на листе
dlink74 Дата: Вторник, 21.06.2016, 10:49 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2010
Добрый день.
В Готовых решениях нашёл тему nilem по Поиску значений в базе данных по первым буквам при вводе на листе.
Хотелось бы адаптировать решение с Листа ENTRY под свои задачи, но в VBA не силён...
Исходный файл с кодом в этой теме:
http://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27
По совету автора создал новую тему...
Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе?
Прикладываю свой файл-Пример.
Спасибо.
Если что не так оформил - заранее извините.
К сообщению приложен файл: ____.xlsx(11Kb)


Сообщение отредактировал dlink74 - Вторник, 21.06.2016, 11:05
 
Ответить
СообщениеДобрый день.
В Готовых решениях нашёл тему nilem по Поиску значений в базе данных по первым буквам при вводе на листе.
Хотелось бы адаптировать решение с Листа ENTRY под свои задачи, но в VBA не силён...
Исходный файл с кодом в этой теме:
http://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27
По совету автора создал новую тему...
Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе?
Прикладываю свой файл-Пример.
Спасибо.
Если что не так оформил - заранее извините.

Автор - dlink74
Дата добавления - 21.06.2016 в 10:49
Manyasha Дата: Вторник, 21.06.2016, 12:27 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1582
Репутация: 659 ±
Замечаний: 0% ±

Excel 2007, 2010
dlink74, нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье).
Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.
Потом скопируйте код из листа ENTRYYY к себе в файл (ПКМ по ярлычку листа ENTRYYY - Исходный текст) в модуль листа Поиск значений.
В коде нужно подправить 2 строчки:[vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba]
[vba]
Код
'Где ищем значения
x = Sheets("База данных").Columns(2).SpecialCells(2).Offset(1).Value
[/vba]
К сообщению приложен файл: -1_.xlsm(28Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеdlink74, нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье).
Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.
Потом скопируйте код из листа ENTRYYY к себе в файл (ПКМ по ярлычку листа ENTRYYY - Исходный текст) в модуль листа Поиск значений.
В коде нужно подправить 2 строчки:[vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba]
[vba]
Код
'Где ищем значения
x = Sheets("База данных").Columns(2).SpecialCells(2).Offset(1).Value
[/vba]

Автор - Manyasha
Дата добавления - 21.06.2016 в 12:27
dlink74 Дата: Вторник, 21.06.2016, 12:44 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2010
Спасибо за помощь.
 
Ответить
СообщениеСпасибо за помощь.

Автор - dlink74
Дата добавления - 21.06.2016 в 12:44
dlink74 Дата: Вторник, 21.06.2016, 13:39 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2010
При переносе кода в рабочий файл и соответствующей правке его - выдаёт ошибку...
Что я неправильно сделал?
Файл приложил.
К сообщению приложен файл: 2016__16.xlsm(30Kb)


Сообщение отредактировал dlink74 - Вторник, 21.06.2016, 13:39
 
Ответить
СообщениеПри переносе кода в рабочий файл и соответствующей правке его - выдаёт ошибку...
Что я неправильно сделал?
Файл приложил.

Автор - dlink74
Дата добавления - 21.06.2016 в 13:39
Manyasha Дата: Вторник, 21.06.2016, 13:49 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 1582
Репутация: 659 ±
Замечаний: 0% ±

Excel 2007, 2010
dlink74,
нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье).
Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.

у Вас их нет на листе Июнь 16. Либо скопируйте эти элементы, как я писала выше, либо создайте сами (это элементы ActiveX).


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеdlink74,
нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье).
Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.

у Вас их нет на листе Июнь 16. Либо скопируйте эти элементы, как я писала выше, либо создайте сами (это элементы ActiveX).

Автор - Manyasha
Дата добавления - 21.06.2016 в 13:49
dlink74 Дата: Вторник, 21.06.2016, 14:04 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2010
Всё понятно.
Работает.
Спасибо!!!
 
Ответить
СообщениеВсё понятно.
Работает.
Спасибо!!!

Автор - dlink74
Дата добавления - 21.06.2016 в 14:04
werty Дата: Пятница, 24.06.2016, 19:21 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток!!!
Подскажите, пожалуйста как изменится код макроса если
нужно что бы поиск был не по одному столбцу а по нескольким????
 
Ответить
СообщениеДоброго времени суток!!!
Подскажите, пожалуйста как изменится код макроса если
нужно что бы поиск был не по одному столбцу а по нескольким????

Автор - werty
Дата добавления - 24.06.2016 в 19:21
SLAVICK Дата: Пятница, 24.06.2016, 22:58 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 1834
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
что бы поиск был не по одному столбцу а по нескольким

замените процедуру поиска на :
[vba]
Код
Private Sub TextBox1_Change()
If Len(TextBox1.Text) = 0 Or bu Then Exit Sub    'при отсутствии символов для поиска - выход
Dim x, i As Long, txt As String, lt As Long, s As String, r As Range, c As Range
    txt = TextBox1.Text: lt = Len(TextBox1.Text)
    'Где ищем значения
    Set r = Sheets("База данных").Columns("b:c").SpecialCells(2).Offset(1)
    For Each c In r ' поиск по первым буквам
    If InStr(1, c, txt) Then s = s & c & "~"
    Next
    ListBox1.List = Split(s, "~")
End Sub
[/vba]
К сообщению приложен файл: 6368207.xlsm(30Kb)


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

замените процедуру поиска на :
[vba]
Код
Private Sub TextBox1_Change()
If Len(TextBox1.Text) = 0 Or bu Then Exit Sub    'при отсутствии символов для поиска - выход
Dim x, i As Long, txt As String, lt As Long, s As String, r As Range, c As Range
    txt = TextBox1.Text: lt = Len(TextBox1.Text)
    'Где ищем значения
    Set r = Sheets("База данных").Columns("b:c").SpecialCells(2).Offset(1)
    For Each c In r ' поиск по первым буквам
    If InStr(1, c, txt) Then s = s & c & "~"
    Next
    ListBox1.List = Split(s, "~")
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 24.06.2016 в 22:58
werty Дата: Пятница, 24.06.2016, 23:10 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, помогло.
Спасибо огрмное.
 
Ответить
СообщениеSLAVICK, помогло.
Спасибо огрмное.

Автор - werty
Дата добавления - 24.06.2016 в 23:10
dlink74 Дата: Четверг, 08.09.2016, 14:32 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2010
Подскажите пожалуйста что нужно поменять в коде, чтобы область в которую вносим значения была не весь Столбец 2, а ограничить её каким-либо количеством строк (7 или 10 к примеру)?
Спасибо.
 
Ответить
СообщениеПодскажите пожалуйста что нужно поменять в коде, чтобы область в которую вносим значения была не весь Столбец 2, а ограничить её каким-либо количеством строк (7 или 10 к примеру)?
Спасибо.

Автор - dlink74
Дата добавления - 08.09.2016 в 14:32
Manyasha Дата: Четверг, 08.09.2016, 15:26 | Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 1582
Репутация: 659 ±
Замечаний: 0% ±

Excel 2007, 2010
dlink74, вместо строчки
[vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba]
напишите
[vba]
Код
If Not Intersect(Target, Range("b2:b10")) Is Nothing Then
[/vba]
b2:b10 - диапазон, для которого запускается поиск


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеdlink74, вместо строчки
[vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba]
напишите
[vba]
Код
If Not Intersect(Target, Range("b2:b10")) Is Nothing Then
[/vba]
b2:b10 - диапазон, для которого запускается поиск

Автор - Manyasha
Дата добавления - 08.09.2016 в 15:26
dlink74 Дата: Четверг, 08.09.2016, 18:54 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2010
Спасибо.
 
Ответить
СообщениеСпасибо.

Автор - dlink74
Дата добавления - 08.09.2016 в 18:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск значений в базе по первым буквам при вводе на листе (Макросы/Sub)
Страница 1 из 11
Поиск:

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