Заполнение форм данными из таблицы

Постановка задачи

У нас есть база данных (список, таблица – называйте как хотите) с информацией о платежах на листе. Данные:

Сложность задачи : быстро распечатать кассовый чек (оплата, счет-фактура…) по любой желаемой записи, выбранной из этого списка. Идти!

Шаг 1. Создайте форму

На другом листе книги (назовем этот лист форма для заполнения ) создайте пустую форму. Можно сделать это самостоятельно, можно использовать готовые формы, взятые, например, с сайтов журнала «Главный бухгалтер» или сайта Microsoft. У меня получилось что-то вроде этого:

Заполнение форм данными из таблицы

В пустых ячейках (Счет, Сумма, Получено от и т. д.) получит данные таблицы платежей из другого листа — чуть позже этим займемся.

Шаг 2: Подготовка таблицы платежей

Прежде чем брать данные из таблицы для нашей формы, таблицу нужно немного модернизировать. А именно, вставьте пустой столбец слева от таблицы. Для ввода метки мы будем использовать (пусть это будет английская буква «х») напротив строки, из которой мы хотим добавить данные в форму:

Шаг 3. Связывание таблицы и формы

Для связи мы используем функцию ВПР(ВПР) - Вы можете прочитать больше об этом здесь. В нашем случае, чтобы вставить в ячейку F9 формы номер платежа с пометкой «х» из Справочника, необходимо в ячейку F9 ввести следующую формулу:

= ВПР («x», Данные! A2: G16)

=ВПР(“x”;Данные!B2:G16;2;0)

Те. в переводе на «понятный», функция должна найти в диапазоне A2:G16 в Datasheet строку, начинающуюся с символа «x» и выдать нам содержимое второго столбца этой строки, т.е. номер платежа.

Все остальные ячейки формы заполняются аналогично – в формуле меняется только номер столбца.

Для отображения суммы прописью я использовал функцию Собственный из дополнения PLEX.

Результат должен быть следующим:

Заполнение форм данными из таблицы

Шаг 4. Чтобы не было двух «х»…

Если пользователь вводит «x» в несколько строк, функция ВПР примет только первое найденное значение. Чтобы избежать такой двусмысленности, щелкните правой кнопкой мыши по вкладке листа Данные , а затем Исходный текст (Исходный код). В появившемся окне редактора Visual Basic скопируйте следующий код:

Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long Dim str As String If Target.Count > 1, затем выход Sub, если Target.Column = 1, then str = Target.Value Application.EnableEvents = False r = Cells(Rows.Count) , 2).End(xlUp).Row Range("A2:A" & r).ClearContents Target.Value = str End If Application.EnableEvents = True End Sub  

Этот макрос не позволяет пользователю вводить более одного «x» в первом столбце.

Ну вот и все! Наслаждаться!

  • Использование функции ВПР для замены значений
  • Улучшенная версия функции ВПР.
  • Сумма прописью (функция Propis) из дополнения PLEX

 

Оставьте комментарий