Добрый день. Извиняюсь за копирайт, предыдущего автора но для заполнения ФИО скопировал файл:-1_.xlsm от сообщения: Manyasha, запустил заполнение Фамилии, Имени и Отчестве не получилось запустить.
В Готовых решениях нашёл тему dlink74 по Поиску значений в базе данных по первым буквам при вводе на листе. Хотелось бы адаптировать решение с Листа ENTRY под свои задачи, но в VBA не силён... Исходный файл с кодом в этой теме: http://www.excelworld.ru/forum/10-24869-1#190013
Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе? Прикладываю свой файл-Пример. Спасибо. Если что не так оформил - заранее извините и простите.
Добрый день. Извиняюсь за копирайт, предыдущего автора но для заполнения ФИО скопировал файл:-1_.xlsm от сообщения: Manyasha, запустил заполнение Фамилии, Имени и Отчестве не получилось запустить.
В Готовых решениях нашёл тему dlink74 по Поиску значений в базе данных по первым буквам при вводе на листе. Хотелось бы адаптировать решение с Листа ENTRY под свои задачи, но в VBA не силён... Исходный файл с кодом в этой теме: http://www.excelworld.ru/forum/10-24869-1#190013
Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе? Прикладываю свой файл-Пример. Спасибо. Если что не так оформил - заранее извините и простите.Nek_AleEX
Добрый день. Запустил заполнение Фамилии при вводе первых букв, но скопировав модуль на Имя и Отчество он ругается на Private Sub Worksheet_SelectionChange(ByVal Target As Range), в (TextBox2 и TextBox3), и не работает по заполнению данных с вкладки: База данных. Разобраться как сделать внос в двух других столбцах не смог.
Добрый день. Запустил заполнение Фамилии при вводе первых букв, но скопировав модуль на Имя и Отчество он ругается на Private Sub Worksheet_SelectionChange(ByVal Target As Range), в (TextBox2 и TextBox3), и не работает по заполнению данных с вкладки: База данных. Разобраться как сделать внос в двух других столбцах не смог.Nek_AleEX
Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе? Прикладываю свой файл-Пример. Спасибо. Если что не так оформил - заранее извините.
Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе? Прикладываю свой файл-Пример. Спасибо. Если что не так оформил - заранее извините.
Думаю нужно брать оригинал и дорабатывать его. Подправить Private Sub Worksheet_SelectionChange продублировать Private Sub TextBox1_Change(), Private Sub TextBox1_KeyDown() и Private Sub ListBox1_Click()
Думаю нужно брать оригинал и дорабатывать его. Подправить Private Sub Worksheet_SelectionChange продублировать Private Sub TextBox1_Change(), Private Sub TextBox1_KeyDown() и Private Sub ListBox1_Click()Hugo
Подправить Private Sub Worksheet_SelectionChange Интересно как подправить, что бы заработала функция работы в третьем и четвертом столбце для ввода по первым буквам. Файл взял оригинал и подправил.
Подправить Private Sub Worksheet_SelectionChange Интересно как подправить, что бы заработала функция работы в третьем и четвертом столбце для ввода по первым буквам. Файл взял оригинал и подправил.Nek_AleEX
Интересно как подправить, что бы заработала функция работы в третьем и четвертом столбце
Там в коде явно прописано [vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba] P.s. вижу ниже что нашли )) Но это всё нужно делать в ОДНОМ Sub Worksheet_SelectionChange!
Т.е. я думаю логика может быть такая (не вникал практически, может и не так) - при переходе по второму столбцу работает один комплект объектов (в котором прописано где что брать и куда выгружать), при переходе по третьему столбцу второй комплект. Или можно всё делать одним комплектом, но тогда нужно всё передавать в параметрах, что сложнее прописать. Но можно. Вот в файле чуть подкрутил - добавил переменную, добавил Left, закомментировал лишнее.
Интересно как подправить, что бы заработала функция работы в третьем и четвертом столбце
Там в коде явно прописано [vba]
Код
If Target.Column = 2 Then ' номер столбца, в который вносим значения
[/vba] P.s. вижу ниже что нашли )) Но это всё нужно делать в ОДНОМ Sub Worksheet_SelectionChange!
Т.е. я думаю логика может быть такая (не вникал практически, может и не так) - при переходе по второму столбцу работает один комплект объектов (в котором прописано где что брать и куда выгружать), при переходе по третьему столбцу второй комплект. Или можно всё делать одним комплектом, но тогда нужно всё передавать в параметрах, что сложнее прописать. Но можно. Вот в файле чуть подкрутил - добавил переменную, добавил Left, закомментировал лишнее.Hugo
То есть чтобы функция работала по трем столбцам, нужно три комплекта с разными объектами столбцов. Но как правильно данный вопрос решить.
Если имеется пример по Двум столбцам работающий, то и третий на подобие него можно будет реализовать.
Не разбираюсь, в том что поиск по трем столбцам как будет правильно сделать. Так что скопировал на три столбца первый модуль (TextBox1 и ListBox1) получилось (TextBox2 и ListBox2) и (TextBox3 и ListBox3) Но как понимаю проблема: 1) Чтобы не ругался на: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Установил: Private Sub Worksheet_SelectionChange1(ByVal Target As Range) Private Sub Worksheet_SelectionChange2(ByVal Target As Range) 2) В модуле (TextBox1 и ListBox1) и так же в (TextBox2 и ListBox2) и (TextBox3 и ListBox3) Функция везде одинаковая TextBox(1,2 и 3) [=ВНЕДРИТЬ("Forms.TextBox.1";"")] и ListBox(1,2 и 3) [=ВНЕДРИТЬ("Forms.ListBox.1";"")]
Так как столбцы в трех модулях указал (2,3 и 4 соответственно)
То есть чтобы функция работала по трем столбцам, нужно три комплекта с разными объектами столбцов. Но как правильно данный вопрос решить.
Если имеется пример по Двум столбцам работающий, то и третий на подобие него можно будет реализовать.
Не разбираюсь, в том что поиск по трем столбцам как будет правильно сделать. Так что скопировал на три столбца первый модуль (TextBox1 и ListBox1) получилось (TextBox2 и ListBox2) и (TextBox3 и ListBox3) Но как понимаю проблема: 1) Чтобы не ругался на: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Установил: Private Sub Worksheet_SelectionChange1(ByVal Target As Range) Private Sub Worksheet_SelectionChange2(ByVal Target As Range) 2) В модуле (TextBox1 и ListBox1) и так же в (TextBox2 и ListBox2) и (TextBox3 и ListBox3) Функция везде одинаковая TextBox(1,2 и 3) [=ВНЕДРИТЬ("Forms.TextBox.1";"")] и ListBox(1,2 и 3) [=ВНЕДРИТЬ("Forms.ListBox.1";"")]
Так как столбцы в трех модулях указал (2,3 и 4 соответственно)Nek_AleEX
Спасибо не сразу проверил файл подгруженный, всё работает.
Один вопросик остался - нужно два раза кликать что бы можно было набирать в ячейке форме, соответственно если переходить между ячейками (стрелками), то поиск в форме не работает. Это можно как то исправить ?
Спасибо не сразу проверил файл подгруженный, всё работает.
Один вопросик остался - нужно два раза кликать что бы можно было набирать в ячейке форме, соответственно если переходить между ячейками (стрелками), то поиск в форме не работает. Это можно как то исправить ?Nek_AleEX
[/vba] Если включить - то можно сразу набирать. Но тогда не работают стрелки, т.к. фокус переходит в текстбокс. Нужно с KeyCode поиграться... Вот так например: [vba]
Код
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Or KeyCode = 9 Then With Me.TextBox1 ActiveCell.Value = .Value .Visible = False: ListBox1.Visible = False End With ActiveCell(2, 1).Select End If Select Case KeyCode Case 37: ActiveCell.Offset(0, -1).Select 'left Case 38: ActiveCell.Offset(-1, 0).Select 'up Case 39: ActiveCell(1, 2).Select 'right Case 40: ActiveCell(2, 1).Select 'down End Select End Sub
[/vba]
Там в коде закомментировано [vba]
Код
.Activate
[/vba] Если включить - то можно сразу набирать. Но тогда не работают стрелки, т.к. фокус переходит в текстбокс. Нужно с KeyCode поиграться... Вот так например: [vba]
Код
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Or KeyCode = 9 Then With Me.TextBox1 ActiveCell.Value = .Value .Visible = False: ListBox1.Visible = False End With ActiveCell(2, 1).Select End If Select Case KeyCode Case 37: ActiveCell.Offset(0, -1).Select 'left Case 38: ActiveCell.Offset(-1, 0).Select 'up Case 39: ActiveCell(1, 2).Select 'right Case 40: ActiveCell(2, 1).Select 'down End Select End Sub
Если это вот прямо рабочая задача - то там по логике нужно при заполнении любой ячейки подтягивать остальные данные в две других. Что бы получить данные реального человека, а не микс из трёх. Ещё логичнее предлагать выбор из ФИО, а не отдельно Ф/И/О И это думаю сильно усложняет код, даже не охота его писать (( P.S. Но написал ))
Если это вот прямо рабочая задача - то там по логике нужно при заполнении любой ячейки подтягивать остальные данные в две других. Что бы получить данные реального человека, а не микс из трёх. Ещё логичнее предлагать выбор из ФИО, а не отдельно Ф/И/О И это думаю сильно усложняет код, даже не охота его писать (( P.S. Но написал ))Hugo
Хотя если уже добить 1_1_3.xlsm до идеального варианта, но как понимаю это сложнее 1) Если внес Фамилию новую. Что бы Имя и Отчество вносилось по столбцам из (Имени и Отчества) 2) Если совпадает Фамилия но Имя Отчество не совпадают, то при записи поверх, стирались данные.
Хотя данная функция интересна, можно использовать при вносе ФИО и даты рождения, если кому пригодится.
Хотя если уже добить 1_1_3.xlsm до идеального варианта, но как понимаю это сложнее 1) Если внес Фамилию новую. Что бы Имя и Отчество вносилось по столбцам из (Имени и Отчества) 2) Если совпадает Фамилия но Имя Отчество не совпадают, то при записи поверх, стирались данные.
Хотя данная функция интересна, можно использовать при вносе ФИО и даты рождения, если кому пригодится.Nek_AleEX
Так 1_1_3.xlsm так и работает - если в базе добавился человек, то он сразу доступен для выбора, и при выборе из списка другого человека данные перезаписываются. Если просто ввести пару букв и энтер (не выбирать из предложенного списка) - тогда вводятся во все ячейки эти пара букв, это может и нужно как-то доработать, но по логике такую возможность вообще нужно отключить, ибо ФИО должны быть только из списка, а не какие-то левые... Если очень нужен левый - пишите его в других столбцах, затем копипаст всех трёх этих ячеек в сразу 3 ячейки начиная со второго столбца.
Так 1_1_3.xlsm так и работает - если в базе добавился человек, то он сразу доступен для выбора, и при выборе из списка другого человека данные перезаписываются. Если просто ввести пару букв и энтер (не выбирать из предложенного списка) - тогда вводятся во все ячейки эти пара букв, это может и нужно как-то доработать, но по логике такую возможность вообще нужно отключить, ибо ФИО должны быть только из списка, а не какие-то левые... Если очень нужен левый - пишите его в других столбцах, затем копипаст всех трёх этих ячеек в сразу 3 ячейки начиная со второго столбца.Hugo
Подскажите пожалуйста что в файле ещё поправить, что бы при вводе фамилии, вставлялось ФИО и дата рождения. Поправил чтобы отображалась, но не могу понять что за параметр отвечает за вставку в 5 столбец.
Подскажите пожалуйста что в файле ещё поправить, что бы при вводе фамилии, вставлялось ФИО и дата рождения. Поправил чтобы отображалась, но не могу понять что за параметр отвечает за вставку в 5 столбец.Nek_AleEX