Добрый день. В Готовых решениях нашёл тему nilem по Поиску значений в базе данных по первым буквам при вводе на листе. Хотелось бы адаптировать решение с Листа ENTRY под свои задачи, но в VBA не силён... Исходный файл с кодом в этой теме: http://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27 По совету автора создал новую тему... Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе? Прикладываю свой файл-Пример. Спасибо. Если что не так оформил - заранее извините.
Добрый день. В Готовых решениях нашёл тему nilem по Поиску значений в базе данных по первым буквам при вводе на листе. Хотелось бы адаптировать решение с Листа ENTRY под свои задачи, но в VBA не силён... Исходный файл с кодом в этой теме: http://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27 По совету автора создал новую тему... Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе? Прикладываю свой файл-Пример. Спасибо. Если что не так оформил - заранее извините.dlink74
dlink74, нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье). Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик. Потом скопируйте код из листа ENTRYYY к себе в файл (ПКМ по ярлычку листа ENTRYYY - Исходный текст) в модуль листа Поиск значений. В коде нужно подправить 2 строчки:[vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba] [vba]
Код
'Где ищем значения x = Sheets("База данных").Columns(2).SpecialCells(2).Offset(1).Value
[/vba]
dlink74, нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье). Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик. Потом скопируйте код из листа ENTRYYY к себе в файл (ПКМ по ярлычку листа ENTRYYY - Исходный текст) в модуль листа Поиск значений. В коде нужно подправить 2 строчки:[vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba] [vba]
Код
'Где ищем значения x = Sheets("База данных").Columns(2).SpecialCells(2).Offset(1).Value
нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье). Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.
у Вас их нет на листе Июнь 16. Либо скопируйте эти элементы, как я писала выше, либо создайте сами (это элементы ActiveX).
нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье). Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.
у Вас их нет на листе Июнь 16. Либо скопируйте эти элементы, как я писала выше, либо создайте сами (это элементы ActiveX).Manyasha
что бы поиск был не по одному столбцу а по нескольким
замените процедуру поиска на : [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]
Код
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
Подскажите пожалуйста что нужно поменять в коде, чтобы область в которую вносим значения была не весь Столбец 2, а ограничить её каким-либо количеством строк (7 или 10 к примеру)? Спасибо.
Подскажите пожалуйста что нужно поменять в коде, чтобы область в которую вносим значения была не весь Столбец 2, а ограничить её каким-либо количеством строк (7 или 10 к примеру)? Спасибо.dlink74
Manyasha, здравствуйте. По данному коду 2 вопроса: 1-й - что нужно прописать в коде, чтобы встав уже на заполненную ячейку, старая надпись удалялась бы, а курсор становился бы активным для записи? 2-й - в коде поставил ячейку С6, в которую нужно вносить значения (как Вы подсказали выше) [vba]
Код
If Not Intersect(Target, Range("c6")) Is Nothing Then
[/vba] но мне нужно, чтобы можно было вносить изменения и в ячейку С16 - как прописать, подскажите пожалуйста.
Спасибо
Manyasha, здравствуйте. По данному коду 2 вопроса: 1-й - что нужно прописать в коде, чтобы встав уже на заполненную ячейку, старая надпись удалялась бы, а курсор становился бы активным для записи? 2-й - в коде поставил ячейку С6, в которую нужно вносить значения (как Вы подсказали выше) [vba]
Код
If Not Intersect(Target, Range("c6")) Is Nothing Then
[/vba] но мне нужно, чтобы можно было вносить изменения и в ячейку С16 - как прописать, подскажите пожалуйста.
Пройдите по ссылке в первом посте и внимательно почитайте что там написано. Первый Фор-Некст нужно закомментировать, а второй наоборот - раскомментировать
Пройдите по ссылке в первом посте и внимательно почитайте что там написано. Первый Фор-Некст нужно закомментировать, а второй наоборот - раскомментировать_Boroda_