Страницы: 1
RSS
Протокол (заполнение бланка из базы)
 
Надо заполнить протокол на 1 листе из таблицы 2 листа.    
Механизм действия мне представляется так:  
1 Задаем вопрос какой номер протокола  ввести.  
2 проходит поиск по номеру протокола на 2 листе.  
3 если не найден, то сообщить пользователю и прервать макрос.  
4 если найдена, то принести данные из найденной строки по номеру протокола в протокол.  
 
Главная проблема это поиск в диапазоне, и передача номера найденной строки.
 
Оно и без макросов легко делается с помощью формулы =ИНДЕКС() и объекта "Поле со списком". А еще - в разделе "Приемы" есть как раз то, что Вам надо. Покопайтесь, найдете на "раз".
 
Прислать пример в форум не могу, админы запрещают.  
Но могу на мыло. Или ждите, пока кто-н. из завсегдатаев ответит.
 
Дальше делайте по образцу.
Я сам - дурнее всякого примера! ...
 
Kaerius, ну вот что за название темы? Такие удаляются...
 
Юр извини, прозевал.
Я сам - дурнее всякого примера! ...
 
Название темы можно сменить на "Помогите с макросом заполнения протокола из таблицы".  
И так вот что я уже написал:  
 
Sub Макрос1()  
 
Sheets("Лист1").Select  
 
y = InputBox("Введите номер Протокола ")  
Range("F3").Select 'протокол  
ActiveCell.FormulaR1C1 = y 'ввод номера протокола  
 
Sheets("Лист2").Select  
 
   Application.FindFormat.NumberFormat = "###"  
   Cells.Find(What:=y, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _  
       xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _  
       , SearchFormat:=True).Activate  
i = ActiveCell.Row  
 
'строку i в массив  
 
Sheets("Лист1").Select  
 
' из масиива в анкету  
 
End Sub
 
И зачем это все? Вы мой файл смотрели? Выбираете из вып. списка номер протокола и все заполняется без вопросов и сообщений, т.к. в списке нет несуществующих номеров. Я сам любитель макросов, но в этом случае оптимальней формулами.
Я сам - дурнее всякого примера! ...
 
Файл глянул,  всё хорошо, но надо будет формулу переделывать при добавлении новых строк в 2 книгу. И спасибо за помощь.
 
Зачем переделывать? Выпадающий список можно на динамическом диапазоне сделать - задать имя  
=OFFSET(Лист2!$A$2;0;0;COUNTA(Лист2!$A:$A)-1)  
Тут рядом тема http://www.planetaexcel.ru/forum.php?thread_id=30221  
ну а формулы написать с запасом хоть на 1000 строк, или может тоже динамические имена придумать, я только не умею, примера нет на область не из одного столбца :)
 
Сумел :)  
Оказывается, рядом было...
 
На единичку ошибся в имени data, правильно так:  
=OFFSET(Лист2!$A$2;0;0;COUNTA(Лист2!$A:$A)-1;14)
Страницы: 1
Читают тему
Наверх