Домашняя страница 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
Группа: Модераторы
Ранг: Старожил
Сообщений: 1960
Репутация: 816 ±
Замечаний: 0% ±

Excel 2010, 2016
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
Группа: Модераторы
Ранг: Старожил
Сообщений: 1960
Репутация: 816 ±
Замечаний: 0% ±

Excel 2010, 2016
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
Группа: Модераторы
Ранг: Старожил
Сообщений: 2003
Репутация: 673 ±
Замечаний: 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
Группа: Модераторы
Ранг: Старожил
Сообщений: 1960
Репутация: 816 ±
Замечаний: 0% ±

Excel 2010, 2016
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
grh1 Дата: Воскресенье, 13.08.2017, 08:55 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

Manyasha, здравствуйте. По данному коду 2 вопроса:
1-й - что нужно прописать в коде, чтобы встав уже на заполненную ячейку, старая надпись удалялась бы, а курсор становился бы активным для записи?
2-й - в коде поставил ячейку С6, в которую нужно вносить значения (как Вы подсказали выше)
[vba]
Код
If Not Intersect(Target, Range("c6")) Is Nothing Then
[/vba]
но мне нужно, чтобы можно было вносить изменения и в ячейку С16 - как прописать, подскажите пожалуйста.

Спасибо


Сообщение отредактировал grh1 - Воскресенье, 13.08.2017, 12:07
 
Ответить
СообщениеManyasha, здравствуйте. По данному коду 2 вопроса:
1-й - что нужно прописать в коде, чтобы встав уже на заполненную ячейку, старая надпись удалялась бы, а курсор становился бы активным для записи?
2-й - в коде поставил ячейку С6, в которую нужно вносить значения (как Вы подсказали выше)
[vba]
Код
If Not Intersect(Target, Range("c6")) Is Nothing Then
[/vba]
но мне нужно, чтобы можно было вносить изменения и в ячейку С16 - как прописать, подскажите пожалуйста.

Спасибо

Автор - grh1
Дата добавления - 13.08.2017 в 08:55
_Boroda_ Дата: Воскресенье, 13.08.2017, 15:28 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11327
Репутация: 4676 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
If Not Intersect(Target, Range("C6,C16")) Is Nothing Then
    Target.ClearContents
[/vba]
Кстати, я бы добавил еще и автоактивацию текстбокса. Вернее, снял бы коммент с
[vba]
Код
.Activate
[/vba]
К сообщению приложен файл: -1_1.xlsm(30Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
If Not Intersect(Target, Range("C6,C16")) Is Nothing Then
    Target.ClearContents
[/vba]
Кстати, я бы добавил еще и автоактивацию текстбокса. Вернее, снял бы коммент с
[vba]
Код
.Activate
[/vba]

Автор - _Boroda_
Дата добавления - 13.08.2017 в 15:28
grh1 Дата: Воскресенье, 13.08.2017, 15:43 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_, супер, спасибо - сейчас буду тестить.
 
Ответить
Сообщение_Boroda_, супер, спасибо - сейчас буду тестить.

Автор - grh1
Дата добавления - 13.08.2017 в 15:43
grh1 Дата: Воскресенье, 13.08.2017, 20:43 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_, подскажите пожалуйста, у меня в файле есть еще ячейки с календарем, так вот когда в код добавляю строки
[vba]
Код
Select Case Target.Address
        Case "$C$5", "$C$9": UserForm1.Show
      Target.ClearContents: SendKeys "%{DOWN}"
    End Select
[/vba]
(те ячейки, в которых календари стоят)
то перестает корректно работать поиск по первым буквам. Что не так, где конфликт?


Сообщение отредактировал grh1 - Воскресенье, 13.08.2017, 21:48
 
Ответить
Сообщение_Boroda_, подскажите пожалуйста, у меня в файле есть еще ячейки с календарем, так вот когда в код добавляю строки
[vba]
Код
Select Case Target.Address
        Case "$C$5", "$C$9": UserForm1.Show
      Target.ClearContents: SendKeys "%{DOWN}"
    End Select
[/vba]
(те ячейки, в которых календари стоят)
то перестает корректно работать поиск по первым буквам. Что не так, где конфликт?

Автор - grh1
Дата добавления - 13.08.2017 в 20:43
Pelena Дата: Воскресенье, 13.08.2017, 21:45 | Сообщение № 17
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11484
Репутация: 2554 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
grh1, код надо оформлять тегами с помощью кнопки #, а не fx. Исправьте


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщениеgrh1, код надо оформлять тегами с помощью кнопки #, а не fx. Исправьте

Автор - Pelena
Дата добавления - 13.08.2017 в 21:45
velikoleg Дата: Четверг, 31.08.2017, 18:23 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_,
Кстати, я бы добавил еще и автоактивацию текстбокса. Вернее, снял бы коммент с
[vba]
Код
.Activate
[/vba]
Подскажите можно ли сделать автозапуск формы при открытии файла?


Сообщение отредактировал velikoleg - Четверг, 31.08.2017, 21:33
 
Ответить
Сообщение_Boroda_,
Кстати, я бы добавил еще и автоактивацию текстбокса. Вернее, снял бы коммент с
[vba]
Код
.Activate
[/vba]
Подскажите можно ли сделать автозапуск формы при открытии файла?

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

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