Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Усовершенствование созданного приложения






У созданных процедур, оказывающих помощь при заполнении журнала кассовых документов, есть два существенных недостатка:

  • при вводе записи каждого кассового документа необходимо помещать табличный курсор в ячейку ввода даты этого документа;
  • данные вводятся непосредственно в ячейки рабочего листа, что тоже не совсем удобно.

Для устранения первого недостатка необходимо найти алгоритм поиска первой пустой строки журнала, в которую будут вводиться данные, а для устранения второго - создать пользовательское диалоговое окно для ввода этих данных.

Автоматический поиск первой пустой строки журнала

В предыдущей главе ввод данных в конец списка журнала регистрации осуществлялся их вводом в самую последнюю строку предполагаемой к заполнению области списка, а затем с помощью операции сортировки по порядковому номеру содержимое этой строки перемещалось в конец журнала регистрации. Алгоритм создания такого алгоритма довольно прост и может использоваться в табличных базах данных, имеющих сравнительно небольшой объем, например, 200 строк. Но при необходимости произвести сортировку списка, состоящую из пяти - десяти тысяч строк, потери времени на выполнение этой операции будут существенны.

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

Усовершенствуйте подпрограмму РасходныйОрдер. В связи с тем, что книга предназначена больше как учебное пособие, то не будем проводить редактирование подпрограммы, а создадим следующую РасходныйОрдерАвто.

Для создания новой подпрограммы прямо в Редакторе Microsoft Visual Basic выполните следующие действия:

  • выделите все тело подпрограммы РасходныйОрдер и скопируйте в буфер обмена;
  • с помощью комбинации клавиш [Ctrl+End] переместите курсор в конец окна программ и произведите вставку скопированного текста из буфера обмена;
  • измените имя подпрограммы, дополнив ее текстом Авто.

Допишите в начале подпрограммы две строки кода VBA, приведенные на рис. 5.14.

Рис. 5.14. Код VBA поиска первой пустой строки и код активизации ячейки ввода даты для формирования записи расходного кассового ордера

Рассмотрим первую строку. Ее задача - присвоить переменной Row значение, которое равно количеству заполненных ячеек на активном рабочем листе в диапазонах В11: В200, F11: F200 увеличенному на значение " 11".

Первая строка основана на применении функции СЧЕТЗ (рис. 5.15), производящей подсчет непустых ячеек в указанном диапазоне. В нашем примере выбран диапазон ввода даты приходных и расходных кассовых ордеров. Значение 11 - количество строк с 1-й по 10-ю, в которые не вносятся записи о кассовых операциях, увеличенное на единицу.

Задача второй строки - выделить ячейку на пересечении номера определенной строки и шестого столбца. Номер строки задается переменной Row.

Рис. 5.15. Панель функции СЧЕТЗ

Переменные

В книге довольно часто будут использоваться переменные. Они применяются для управления данными при выполнении подпрограммы, что позволяет делать подпрограмму более читаемой, и, как правило, экономит время разработчика и время выполнения подпрограммы. По правилам, прежде чем использовать переменную в тексте программы, ее нужно описать. Описание производится до того, как эта переменная будет использоваться, как правило, в начале подпрограммы и заключается в присвоении типа данных, к которым принадлежит эта переменная. Это необходимо, для того чтобы в памяти было выделено место для хранения значения переменной во время выполнения программы. При описании переменной в большинстве случаев повышается скорость выполнения программы. Это выгодно, если на выполнение подпрограммы требуется какое-то значимое время.

Временем жизни переменной называется время, в течение которого переменная может иметь значение. Значение переменной может меняться на протяжении ее времени жизни.

Но с другой стороны процедура описания переменной не является обязательной и в связи с тем, что разрабатываемые приложения в этой книге преследуют другую цель, этому внимание не будет уделяться. Если же читателю это будет интересно, то он найдет эту информацию в специализированной литературе по Visual Basic of Application.

Пользовательские диалоговые окна

В Excel есть возможность создания пользовательских диалоговых окон с помощью Редактора Visual Basic. Наиболее простой метод воспользоваться готовыми средствами VBA для создания пользовательского диалогового окна показанного на рис. 5.16.

Рис. 5.16. Созданное пользовательское диалоговое окно Ввод данных для ввода суммы приходного кассового ордера в журнал кассовых документов

Такое диалоговое окно задается с помощью функции InputBox и служит для ввода одного значения при выполнении подпрограммы. Полное описание и синтаксис функции можно получить в справочной системе Visual Basic. Упрощенный же вариант синтаксиса функции:

InputBox(prompt[, title] [, default])

содержит следующие именованные аргументы:

  • prompt - обязательный аргумент. Это строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина строки prompt составляет приблизительно 1024 символов и зависит от ширины используемых символов.
  • title - необязательный аргумент. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения.
  • default - необязательный аргумент. Строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.

Именованные аргументы - это аргументы, имеющее имя, определенное в библиотеке объектов.

Строковое выражение - это любое выражение, значением которого является последовательность символов.

На рис. 5.17. показан фрагмент подпрограммы с функцией InputBox для создания диалогового окна Ввод данных (рис. 5.16.), для ввода значения суммы расходного ордера:

InputBox(" Введите сумму расходного документа", " Ввод данных")

которое содержит обязательный аргумент prompt - Введите сумму расходного документа, и необязательный title - Ввод данных. Аргумент default опущен, но его удобно использовать, когда вводимое значение заранее известно. Значение (Value), введенное в поле ввода при нажатии на кнопку ОК будет введено в активную ячейку, при нажатии на кнопку Отмена - не введено.

Рис. 5.17. Фрагмент макроса ПриходныйОрдерАвто с кодом ввода в активную ячейку суммы расходного ордера

Полный текст макроса ПриходныйОрдерАвто показан на рис. 5.18.

Рис. 5.18. Код VBA макроса ПриходныйОрдерАвто

Автоматизация заполнения данных расходного ордера

Подпрограмма РасходныйОрдерАвто создается аналогично. Макрос имеет незначительные отличия при относительных переходах при вводе данных.

Рис. 5.19. Макрос РасходныйОрдерАвто


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал