В заключительной части этой темы мы разберем интересную практическую ситуацию, связанную с выпиской квитанции на оплату. Начнем работу с создания новой книги и один из листов оформим в виде, представленном на рис. 3.33. Это будет бланк квитанции об оплате. Здесь используется форматирование ячеек и размещение на листе дополнительных фигур (линий).

Рис. 3.33. Бланк квитанции
Далее наша цель заключается в обеспечении автоматизации при заполнении фрагментов квитанции, выделенных линиями. Для определенности будем считать, что выписываются квитанции для внесения оплаты за обучение (хотя какого-то принципиального значения тематика рассматриваемого примера не имеет). При оплате за обучение возможна ситуация, когда плательщик и сам учащийся — разные люди. Например, обучение оплачивает родственник. И это мы в нашей разработке должны предусмотреть. Также в квитанции сумму необходимо заполнить как цифрами, так и прописью. Поэтому потребуется обеспечить перевод числа в пропись.
Создадим еще один лист в нашей книге, который назовем Управление (рис. 3.34). Здесь, начиная с восьмой строки, располагается справочная информация об учащихся и плательщиках. Элемент управления «Поле со списком» заполняется фамилиями учащихся при открытии книги. Для этого нам понадобится оформить соответствующим образом процедуру (листинг 3.33), выполняемую при открытии книги.
1 2 3 4 5 6 7 8 9 10 11 12 13 | ' Листинг 3.33. Процедура, выполняемая при открытии книги Private Sub Workbook_Open() ' Подсчет числа учащихся N = 0 While Worksheets(1).Cells(N + 8, 1).Value <> "" N = N + 1 Wend ' Заполнение списка учащихся Worksheets(1).Spk.Clear For i = 1 To N Worksheets(1).Spk.AddItems(1).Cells(i + 7, 1).Value Next End Sub |

Рис. 3.34. Лист Управление
Здесь предполагается, что лист Управление располагается на первом месте среди листов книги. Также для поля со списком подобрано Spk в качестве значения свойства Name.
Теперь пользователь, после выбора щелчком в поле со списком интересующего его студента, должен автоматически получить в ячейке, расположенной ниже заголовка Плательщик, фамилию плательщика (как уже говорилось, это может быть либо сам студент, либо один из его родственников). После этого необходимо внести сумму для квитанции и дату. Эта информация вводится в третий и четвертый столбцы ниже соответствующих подписей на листе.
Теперь важный технический момент. Для квитанции необходимо преобразовать числовое выражение суммы в строковое (представить прописью). Разумеется, необходима функция, которая это делает. Среди стандартных функций Microsoft Excel такой нет, и следует воспользоваться дополнительным модулем.
Один из наиболее удобных вариантов решения данной проблемы выглядит следующим образом. В любой поисковой системе (например, Rambler или Yandex) следует набрать в строке поиска «пропись Excel». В результате вы получите несколько предложений. Рекомендуется остановиться на модуле d2w.xla. Этот файл представляет надстройку для Microsoft Excel. Необходимо распаковать содержимое загруженного архива и разместить файл d2w.xla в папке Program Files ► Microsoft Office ► Office12 ► XLSTART. После этого модуль будет автоматически подключаться при запуске Microsoft Excel.
После выполненных действий можно в любой книге Microsoft Excel использовать формулу вида = пропись (число) для перевода числового значения соответствующей ячейки в прописную форму. Ею и следует воспользоваться па рабочем листе в третьей строке третьего столбца: =ПРОПИСЬ(R[-1]С). Теперь осталось написать процедуру обработки щелчка на кнопке Заполнить (листинг 3.34), которая обеспечивает заполнение бланка квитанции.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ' Листинг 3.34. Обработка щелчка на кнопке Заполнить Private Sub CommandButton1_Click() ' Информация о плательщике Worksheets("Бланк").Cells(10, 4).Value = Cells(2, 2).Value Worksheets("Бланк").Cells(26, 4).Value = Cells(2, 2).Value ' Информация об учащемся Worksheets("Бланк").Cells(11, 3).Value = Spk.Text Worksheets("Бланк").Cells(27, 3).Value = Spk.Text ' Информация о сумме Worksheets("Бланк").Cells(12, 4).Value = Cells(2, 3).Value Worksheets("Бланк").Cells(28, 4).Value = Cells(2, 3).Value ' Информация о сумме прописью Worksheets("Бланк").Cells(13, 3).Value = Cells(3, 3).Value Worksheets("Бланк").Cells(29, 3).Value = Cells(3, 3).Value ' Дата Worksheets("Бланк").Cells(15, 7).Value = Cells(2, 4).Value Worksheets("Бланк").Cells(31, 7).Value = Cells(2, 4).Value End Sub |
Результат заполнения бланка квитанции продемонстрирован на рис. 3.35.

Рис. 3.35. Заполнение бланка квитанции
Управление Excel из других офисных программ пакета Microsoft Office
Как отправлять электронные сообщения Microsoft Outlook прямо из вашего листа таблицы Excel с помощью VBA
Очень простой пример управления Word из Excel с помощью VBA
О. А. Сдвижков — Непараметрическая статистика в MS Excel и VBA
С. Роман — Использование макросов в Excel
Как обеспечить вывод значений выпадающего списка с двоеточием, как в бухгалтерских программах?
Как при помощи инструментов Excel решить задачу о коробке максимального объема
Построение графика функции одной переменной средствами Excel
Как правильно вводить, редактировать и копировать формулы в таблицах Excel
Как в Excel обойтись без подстановки шрифтов при применении малых кеглей