Създаване на макрос за попълване на запис на приходен ордер в регистъра на касовите документи

На тази стъпка ще завършим разработката на това приложение.

След въвеждане на бележките, полученият макрос за въвеждане на запис в регистъра на касовите документи трябва да изглежда както е показано на фигура 1.

Фиг.1. Полученият макрос за въвеждане на запис в регистъра на касовите документи

Създаване на макрос за попълване на запис на приходен ордер в регистъра на касовите документи

За да създадете подобен макрос за попълване на областта на входящата поръчка, достатъчно е да изберете областта на макроса на изходящата поръчка в прозореца на програмата, да копирате избрания фрагмент в клипборда, като поставите курсора в края на реда End Sub и да го поставите от клипборда. След това преименувайте новия макрос на Входяща поръчка и редактирайте макроса (Фигура 2).

Фиг.2. Macro ReceiptOrder за формиране на запис на разписка в дневника за регистрация на касови документи

Подобряване на създаденото приложение

Създадените процедури, които подпомагат попълването на регистъра на касовите документи, имат два съществени недостатъка:

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

За да се отстрани първият недостатък, е необходимо да се намери алгоритъм за намиране на първия празен ред от дневника, в който ще бъдат въведени данни, и за отстраняване на втория, създайте персонализиран диалогов прозорец за въвеждане на тези данни.

Автоматично търсене на първия празен ред от дневника

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

Изходът от тази ситуация е да се създаде алгоритъм за автоматично търсене на първия празен ред и активиране на клетката, в която ще бъде въведена датата.

Нека подобрим подпрограмата OutgoingOrder. Поради факта, че книгата е предназначена по-скоро като учебно помагало, ние няма да редактираме подпрограмата, а ще създадем следната OutgoingOrderAuto.

За да създадете нова подпрограма директно в редактора на Microsoft Visual Basic, направете следното:

  • изберете цялото тяло на подпрограмата OutgoingOrder и го копирайте в клипборда;
  • като използвате клавишната комбинация Ctrl + End, преместете курсора в края на прозореца на програмата и поставете копирания текст от клипборда;
  • променете името на подпрограмата, като я допълните с текста Auto .

Добавете двата реда VBA код, показан на фигура 3 в началото на подпрограмата.

Фиг.3. VBA код за намиране на първия празен ред и код за активиране на клетката за въвеждане на дата за генериране на запис на изходящ касов варант

Нека да разгледаме първия ред. Неговата задача е да присвои стойност на променливата Row, която е равна на броя на попълнените клетки на активния работен лист в диапазоните B11:B200, F11:F200, увеличен със стойността "11".

Първият ред се основава на приложението на функцията COUNTA (Фигура 4), която брои непразните клетки в посочения диапазон.

Фиг.4. ПанелCOUNT функции

В нашия пример е избран диапазон за въвеждане на дата на входящи и изходящи касови ордери. Стойността 11 е броят на редовете от 1-ви до 10-ти, в които не се въвеждат записи на касови операции, увеличен с единица.

Задачата на втория ред е да изберете клетка в пресечната точка на номера на определен ред и шестата колона. Номерът на реда се дава от променливата Row.

Променливи

Ще използваме променливи доста често. Те се използват за манипулиране на данни по време на изпълнение на подпрограма, което прави подпрограмата по-четима и като цяло спестява време на разработчиците и време за изпълнение на подпрограмата. Според правилата, преди да се използва променлива в текста на програмата, тя трябва да бъде декларирана. Декларацията се прави преди да се използва променливата, обикновено в началото на подпрограмата, и се състои в присвояване на типа данни, към който принадлежи променливата. Това е необходимо, за да се разпредели място в паметта за съхраняване на стойността на променливата по време на изпълнение на програмата. Описването на променлива в повечето случаи увеличава скоростта на изпълнение на програмата. Това е от полза, ако изпълнението на подпрограмата отнема значително време.

е времето, през което променливата може да има стойност. Стойността на една променлива може да се промени по време на нейния живот.

Но от друга страна, процедурата за описване на променлива не е задължителна и поради факта, че разработваните приложения имат различна цел, на това няма да се обърне внимание. Ако се интересувате, можете да намерите тази информация в специализираната литература за Visual Basic of Application.

Персонализирани диалогови прозорци

Excel има способността да създава персонализирани диалогови прозорци с помощта наРедактор на Visual Basic. Най-лесният метод е да използвате готовите инструменти на VBA, за да създадете персонализиран диалогов прозорец, показан на фигура 5.

Фиг.5. Създаден персонализиран диалогов прозорец Въвеждане на данни за въвеждане на сумата на входящ касов ордер в дневника на касовите документи

Такъв диалогов прозорец се задава с помощта на функцията InputBox и се използва за въвеждане на една стойност при изпълнение на подпрограма. За пълно описание и синтаксис на функцията вижте помощта на Visual Basic. Опростена версия на синтаксиса на функцията:

Именуваните аргументи са аргументи, които имат име, дефинирано в библиотеката с обекти.

Низов израз е всеки израз, чиято стойност е последователност от знаци.

Фигура 6 показва фрагмент от подпрограма с функцията InputBox за създаване на диалогов прозорец за въвеждане на данни (Фигура 5), за въвеждане на стойността на сумата на бележката за издаване:

Фиг.6. Фрагмент от макроса IncomingOrderAuto с кода за въвеждане на сумата на изходящата поръчка в активната клетка

Пълният текст на макроса CreditOrderAuto е показан на Фигура 7.

Фиг.7. VBA макро код IncomingOrderAuto

Автоматизация на попълването на данните за изписването

Подпрограмата OutgoingOrderAuto се създава по същия начин. Макросът има малки разлики в относителните преходи по време на въвеждане на данни.

Фиг.8. Макро Разход ПоръчкаАвтом

Касова гаранция по сметка

Изходящ касов ордер се намира на работния лист Разходен ордер (Фигура 9).

Фиг.9. Работен лист ExpenseOrder с изходящ касов ордер

Бележката за проблема заема диапазона от клетки A2:H33 в работния лист.

В клетка A4 (име на фирма) на листа Заповед за разходи въведете връзка към листа Журнал, в който сте въвелииме на компания:

Търсенето на желаните стойности се извършва чрез функцията VLOOKUP, според въведената стойност в клетка A14 (номерът на изходящия касов ордер, показан на екрана). Например в клетка B14 (въвеждайки датата на създаване на документа) формулата е:

В останалите клетки - D14, F14, B16, B18 и B30 са подобни формули за търсене на данни, въведени в регистъра за регистрация, но се променя само номерът на колоната в третия аргумент на функцията.

Входящ касов ордер

Приходната и разходната форма са почти еднакви, с тази разлика, че приходният ордер се състои от две части - самият ордер и разписката за него, които са разделени с отсечена линия. Следователно полученият работен лист PrixOrder трябва да бъде финализиран. За да направите това, направете промени в името на поръчката и формулите.

Във формулата, намираща се в клетка B14 (дата), направете промени в началото на областта на масива на лист Касов регистър, в който ще се търси информация. За да направите това, в лентата с формули заменете английската буква E с A. Получената формула в клетка B14:

За едновременни промени във всички формули използвайте диалоговия прозорец Replace (Фигура 9), който се извиква чрез командата Edit Replace или чрез натискане на Ctrl + H. Последователност на операциите:

  • изберете работната зона на листа, в която трябва да се направят замените;
  • извикайте диалоговия прозорец Замяна;
  • в полето What въведете от клавиатурата текста $E$, а в полето Replace with - $A$ ;
  • щракнете върху бутона Замени всички.

Фиг.10. Диалогов прозорец Замяна

За оформяне на текста на сумата с думи се използва и модулът за изписване на сумата с думи, чийто вход е клетка N18, а изход O18.

За да създадете клетъчна област със странични линии и текст Изрежете линия:

  • изберете областта на клетките I2:I26;
  • изпълнете командата Format Cell и отидете в раздела Alignment на диалоговия прозорец Format Cells;
  • проверете опциите Обвиване по думи и Обединяване на клетки;
  • в областта Подравняване посочете центъра на подравняване в полетата Хоризонтално и Вертикално;
  • в зоната за ориентация използвайте брояча на градуси, за да въведете 90;
  • отидете в раздела Border и използвайте бутоните в областта Individual, за да изберете страничната граница на клетките с линии.

Фиг.11. Работен лист PrikhoOrder

Разписка за касова бележка

Изписването на датата с думи се извършва чрез съответния модул, намиращ се в областта N21:P21.

Работното поле на лист с входящ касов ордер се различава от изходящ ордер и заема диапазона от клетки A2:L26. Затова изберете тази област, изпълнете командата File Print area Set , което ще гарантира, че ще се отпечата само диапазонът, на който се намира входящият касов ордер.

За да се придаде напълно персонализиран вид на формата на работните листове с разположените върху тях поръчки, е желателно да се премахнат линиите на работния лист на екрана на монитора, които указват границите на клетките на електронната таблица. За да направите това, изпълнете командата Опции за инструменти и в раздела Изглед на диалоговия прозорец Опции премахнете отметката от опцията Решетка в областта Опции на прозореца.

Пълният текст на това приложение можете да намерите тук.

От следващата стъпка ще започнем да разглеждаме автоматизацията на формирането на текстови документи, като използваме примера на стандартен договор за продажба.