Пример от практиката: Изчисляване на платена отпуска

Безплатни 20 урока
регистрирай се и научи

Ако сте вече потребител - Регистриран съм
Видео

Въпроси и отговори

  • Защо да използвам VBA, след като до тук видяното може да се постигне и само с Excel?

    Ана Йонкова:

    По средата на курса този въпрос сигурно е малко тъп, но ми се струва, че ако човек отлично познава Excel не му е нужен VBA. Времето, което му е нужно да направи формулите в Excel не е по-дълго от това да програмира на VBA.

    Димитринка Вълкова:

    Ана, благодаря за въпроса! Така е, в Excel има изключително богати и полезни възможности. Но в ежедневната работа се налага (понякога често или от време на време) да се извършват повтарящи се рутинни действия, за които не се изискват кой знае какви умения, но трябва да се изпълнят с голяма прецизност. Например: изчистване на първоначалните данни и подреждането на данните в таблици, удобни за анализ, задаване на един и същ формат на повече работни листа, автоматично актуализиране на данни в обобщаващите таблици (pivot tables) и построяване на диаграми, създаване на потребителски функции със сложни формули, автоматично импортиране на данни в останалите приложения на MS Office, изпращане на имейли. Към този списък може да се добавят още и още приложения на VBA. Но тук искам да посоча две много важни предимства на VBA: прецизност в изпълнението и пестене на време. Разбира се, не е задължително на всяка цена да се използва VBA. От опит зная, че в ежедневната работа понякога се намират по-добри решения с инструментите на Excel без да се прилага програмен код.

    Димитринка Вълкова:

    Но тъй като курсът е VBA за Excel искам да споделя следните случаи от практиката ми през изминалия месец: 1. Тук, във форума беше поставен въпросът как да се изчислява извънреден труд. За да се получи коректен резултат, във формулата трябваше да се включат няколко проверки с IF. Аз стигнах до 7 вложени IF-а, и въпреки това не успях да включа всички варианти. Другото решение беше с междинни резултати, т.е. да се добавят няколко колони, но това решение също не дава коректни резултати. В случая единственото решение беше да напише потребителска функция (UDF), която изчислява извънредния труд като се въведат само 2 аргумента: начало и край на работното време. Изчисленията са коректни, а освен това ценното на UDF е, че се използва често и не е необходимо всеки път да се въвеждат отново и отново тези сложни формули. 2. Споделено от счетоводител от курса в Аула, която е използвала VBA: "... оборотна ведомост с мемориален ордер, която определя автоматично мястото на началното салдо, с критерий вида на сметката (активна или пасивна). Преизчислява оборотите при всяка добавяна стоп. операция и показва крайно салдо. Също така сумира обща балансова и задбалансова сума и всичко ... " 3. Преди 2 седмици на едно представяне за възможностите на VBA, се поставиха 2 въпроса, които искам да споделя: - Как да се автоматизира "включване/изключване" на условно форматиране. Моето решение, без никакъв програмен код, изненада присъстващите. Ето още едно потвърждение за богатите възможности на Excel. - Другият въпрос беше свързан как да се актуализира обобщаващата таблица (pivot table). Проблемът се оказа, че забравят всеки път да натискат бутон Refresh. Този път решението беше с 3 реда инструкции на VBA, с които автоматично се актуализират данните всеки път, когато се активира листа с pivot table. Мога да продължа с още много примери от моята практика, с които непрекъснато се сблъсквам. С написаното искам да подчертая, че всяко нещо си има своето място и приложение, а вярното решение е това решение, което дава коректен резултат, няма грешки и пести време! Надявам се, че успях да отговоря на въпроса.

    Ана Йонкова:

    Благодаря, за изчерпателния и много убедителен отговор! Въпреки, че Excel ми се струва по-лесен, ще положа усилие да усвоя и VBA. Работата ми е свързана с попълване на таблици и се надявам да открия ползата от VBA за мен самата.

    Силвия Данаилова:

    В подкрепа на думите на Димитринка Вълкова, аз също ще споделя голямата полза от VBA за мен. Всеки месец обработвам огромни справки, които не изискват много добри познания по Excel, но поради спецификата на суровите данни и крайната справка, ръчната им обработка отнема поне 3-4 дни. С VBA справките стават за по около минута всяка - средно 10 на брой, т.е. около 10 минути. Наистина кода е много сложен и комплексен, обхваща много хипотези... Написването му ми отне около 1 месец, но определено отделеното време си заслужаваше. Вече няма неволни технически грешки. Голяма част от зависимостите и отклоненията, които търсех на око или с допълнителни справки след ръчната обработка се извеждат автоматично.

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

    Diana Siteva:

    Нямаш представа колко работа ми спестява VBA. Понякога ми е като предизвикателство да програмирам нещата да стават по-бързо. Не си представям справките, които работя, без макроси.