При планировании, а тем более прогнозировании денежных потоков, должное уважение должно оказываться налоговому планированию. Налоговое планирование, как система правильно организованного управленческого учета на предприятии, состоит из трех элементов:
- минимизация налогообложения законными способами, основанная на умении использовать существующее законодательство для уменьшения (или переноса на более поздние сроки) начисления сумм различных налогов;
- правильном расчете и начислении сумм налогов к уплате;
- перечисления наличности рассчитанных сумм налогов в определенные сроки на бюджетные счета или проведение каких-либо зачетов на эти суммы.
Как видите, при оплате налогов существуют две главные вещи — сроки и суммы. Сроки, как правило, известны, а суммы зачастую становятся известны перед самым наступлением этих сроков, что немаловажно, в системе попыток самого фактора прогнозировании. Налоги вымывают значительную часть оборотных средств, поэтому обязательно должны учитываться в общих денежных потоках.
При создании таблицы с исходными данными в прошлой главе были созданы предпосылки для последующего упрощенного расчета трех видов различных налогов. Специалистами финансового отдела решено выделить в создаваемой модели для расчета налогов отдельный рабочий лист с именем Налоги (рис. 18.1.). При создании таблицы учитывалось следующее:
- все налоги перечисляются в бюджет один раз в месяц;
- такие налоги как налог на прибыль и налог на добавленную стоимость могут иметь отрицательный знак, и тогда эти суммы должны учитываться в следующем периоде;
- если сумма налога начислена, но может быть зачтена не денежными средствами в полном размере или частично, то это тоже должно учитываться;
- прогнозируемые суммы налогов должны учитываться в общем денежном потоке.
Таблица занимает область ячеек С3:I16. Расчет сумм налогов за каждый месяц производится в диапазонах ячеек Е5:Е16, G5:G16 и I5:I16 по НДС, налогу с оборота и налогу на прибыль соответственно.
Рис. 18.1. Таблица для определения сумм налогов по финансовым результатам каждого месяца
Расчет суммы налога на добавленную стоимость
Для промежуточного расчета суммы налога на добавленную стоимость используется область столбцов АА:АD (рис. 18.2. и 18.3.).
Рис. 18.2. Область расчета НДС с формулами
Рис. 18.3. Область расчета НДС с числовыми значениями
В формуле введенной в ячейку АВ5 использована функция ЕСЛИ, которая в своем первом аргументе сравнивает — введен ли признак НДС в ячейку Е10 на рабочем листе ИсхДанные. Если признак не введен, то формула возвращает значение 0, в противном случае возвращает дату, введенную в ячейку D10 на рабочем листе ИсхДанные.
В формуле в АС5 в первом аргументе функции ЕСЛИ сравнивается значение ячейки АВ5 со значением 0 и если условие не выполняется, то функция МЕСЯЦ определяет номер месяца в дате, возвращаемого формулой в ячейке АВ5.
Формула в ячейке AD5 аналогична формуле в ячейке АС5, но возвращает значение содержащееся в ячейке О10 на рабочем листе ИсхДанные (сумма НДС).
В столбце АА вводятся порядковые номера 12-ти месяцев года, которые будут использоваться в формулах диапазона ячеек Е5:Е16 как условие поиска данных для расчета суммарного налога за месяц.
В ячейке Е5 использована функция СУММЕСЛИ, которая по номеру месяца в ячейке АА5 производит сравнение с номерами месяцев, определенных в столбце АС и при выполнении условия выполняет операцию суммирования значений в столбце АD.
Исходя из заданных ранее условий, при которых область таблицы на рабочем листе ИсхДанные может быть использована до строки 5000, формулы в диапазоне ячеек АВ5:АD5 должны быть скопированы до строки 4995. При таком количестве формул файл ДенежныеПотоки увеличится на несколько мегабайт, что впрочем не является критичным. Плохо то, что время выполнения макросов на рабочем листе ИсхДанные будет увеличено в десятки раз, потому что формулы на листе Налоги будут участвовать в процессе проводимых вычислений. Желательно, чтобы эти формулы создавались непосредственно в момент проведения расчетов, а после определения месячных оборотов по НДС область промежуточных расчетов была очищена. Эта задача будет выполняться макросом РасчетНДС.
Макрос расчета суммы налога на добавленную стоимость
Перед записью макроса введите формулы, описанные выше и после записи макроса, отредактируйте код VBA.
Рис. 18.4. Подпрограмма РасчетНДС
Расчет суммы налога с оборота
Если записан макрос расчета налога на добавленную стоимость, то при записи макроса расчета налога с оборота нет необходимости повторять все действия заново. Надо использовать уже записанный текст подпрограммы для создания нового. Макросы аналогичны и их отличие в следующем:
- изменился адрес ячейки ввода признака этого налога на рабочем листе ИсхДанные;
- изменился адрес ячейки расчета суммы этого налога на рабочем листе ИсхДанные;
- изменился диапазон расчета ежемесячных сумм налога в таблице с Е5:Е16 на G5:G16;
Следовательно, ввод новых формул для записи макроса и последующая запись самого макроса не является самым оптимальным решением. Подпрограмма РасчетНалогОборот создается непосредственно в Редакторе Visual Basic используя для редактирования формул панель инструментов Отладка.
Панель инструментов Отладка
Панель инструментов Отладка показана на рис. 18.5., активизируется при помощи команды Вид/Панели инструментов/Отладка и очень удобна при создании новых подпрограмм и редактировании текста кода VBA. В этой главе будут рассмотрены только отдельные кнопки, расположенные на этой панели, а в следующих главах по мере изучения материала будут рассмотрены и остальные.
Рис. 18.5. Панель инструментов Отладка
Режим отладки выполнения подпрограммы
Для того чтобы просмотреть записанную подпрограмму, достаточно с помощью комбинации клавиш Alt+F11 открыть Редактор Visual Basic и активизировав модуль в окне проекта, найти нужный макрос в открывшемся окне программы.
Более простой способ — вызвать диалоговое окно Макрос (рис. 4.17.) и нажать кнопку Изменить. В таком случае будет сразу открыт выбранный макрос.
Такой режим можно назвать режимом редактирования или просмотра и закрытие Редактора Visual Basic осуществляется без всяких предупреждений.
Если же открыть Редактор Visual Basic вызвав диалоговое окно Назначить макрос объекту (рис. 4.18.) и нажав кнопку Правка или же через диалоговое окно Макрос нажав кнопку Войти, то при открытии выбранного макроса первая строка кода будет выделена желтым цветом, а на полосе серого цвета слева от этой строки будет находиться стрелка желтого цвета, указывающая на эту строку. Такой режим называется режимом отладки, и при попытке закрыть Редактор Visual Basic, появится предупреждающее диалоговое окно, о том, что это приведет к остановке отладчика (рис. 18.6.).
Режим отладки предполагает пошаговое или поблочное выполнение подпрограммы находясь непосредственно в редакторе Visual Basic. При этом есть возможность выполнения только кода выбранных строк, возврат назад или в конец подпрограммы. То есть пользователь может выбирать для выполнения нужные ему операторы и контролировать процесс выполнения подпрограммы.
Рис.18.6. Предупреждающее диалоговое окно о том, что выход из Редактора Visual Basic ведет к прерыванию режима отладки
Для выхода из режима отладки достаточно нажать кнопку Сброс на панели инструментов Отладка.
Кнопки Шаг с заходом, Шаг с обходом, Шаг с выходом и запуск макроса
Строка кода VBA, которая вызывает изменение какого-либо состояния, называется оператором подпрограммы. Операторами могут быть ссылки на выполнение других подпрограмм и функций, назначение переменных и присвоение им каких либо значений, активизация рабочих листов и ячеек, ввод формул и значений в ячейки и пр.
Если Редактор Visual Basic не находится в режиме отладки, то для перехода в этот режим достаточно поместить курсор в любое место тела подпрограммы и нажать на кнопку Шаг с заходом. В таком случае будет выделена желтым цветом первая строка подпрограммы и перейдут в состояние активности кнопки Шаг с заходом и Шаг с выходом.
При каждом последующем нажатии на кнопку Шаг с заходом, желтая стрелка будет перемещаться на одну строку вниз по подпрограмме, вызывая выполнение операторов. При этом если в теле выбранной подпрограммы будет указана ссылка на выполнение другой подпрограммы, то эта подпрограмма активизируется, и выполнение ее операторов тоже будет проходить построчно при нажатии на кнопку Шаг с заходом. Нажатие на клавишу F8 соответствует нажатию на кнопку Шаг с заходом.
Если же нет необходимости перехода к "вложенной" подпрограмме с целью построчного ее выполнения, то при нажатии на кнопку Шаг с обходом, эта подпрограмма будет выполнена в автоматическом режиме без захода в нее, а по завершению ее выполнения, в текущей подпрограмме будет выделена первая строка, после ссылки на выполненную подпрограмму.
Кнопка Шаг с выходом предназначена для автоматического завершения и выхода из той подпрограммы, при выполнении которой на нее нажали.
При нажатии кнопки Запуск макроса выполнение подпрограммы, с которой стартовал режим отладки, осуществляется в автоматическом режиме.
Запись макроса РасчетНалогОборот
Для создания макроса РасчетНалогОборот выполните следующие действия:
- находясь в Редакторе Visual Basic, полностью выделите текст подпрограммы РасчетНДС и, скопировав его в буфер обмена, перейдя в конец окна программ, произведите вставку из буфера обмена;
- измените имя скопированного макроса на РасчетНалогОборот;
- очень удобно наблюдать выполнение макроса, не выходя из Редактора Visual Basic. Для этого в верхней половине экрана монитора расположите окно Редактора Visual Basic, а в нижней — окно Excel (рис. 18.7.);
- используя кнопку Шаг с заходом панели инструментов Отладка, перейдите в режим отладки, и при пошаговом прохождении подпрограммы, наблюдайте его выполнение в окне Excel;
- например, отредактировав вводимые формулы прямо в Редакторе Visual Basic, при выполнении оператора ввода формул в диапазон ячеек АВ5:АВ5000 обратите внимание — какая формула введена в ячейке АВ5. Если формула отредактирована неправильно, то, установив курсор на желтую стрелку, передвиньте ее на строку вверх, отредактируйте формулу в тексте подпрограммы и, нажав кнопку Шаг с заходом, проверьте еще раз правильность ввода;
- проверив выполнение всего текста подпрограммы, выйдите из режима отладчика.
Рис. 18.7. Двухоконный режим просмотра пошагового выполнения подпрограммы
Расчет суммы налога на прибыль
При расчете суммы налога на прибыль используется макрос РасчетНалогПрибыль, при создании которого используется такая же методика, как и для написания подпрограммы РасчетНалогОборот. Отличие заключается только в формуле, вводимой в ячейку I5, которая производит умножение суммы определенного налогооблагаемого дохода на листе ИсхДанные на ставку налога на прибыль с последующим округлением полученного результата до второго знака после запятой:
=ОКРУГЛ(СУММЕСЛИ($AC$5:$AD$5000;AA5;$AD$5:$AD$5000)*СтавкаНалогПрибыль;2)
Расчет всех налогов
Для расчета всех налогов запишите подпрограмму РасчетВсехНалогов (рис. 18.8.), которая состоит только из перечня имен выполняемых подпрограмм. Предполагаем, что перед расчетом налогов должен произойти перерасчет всех данных на рабочем листе ИсхДанные с помощью подпрограммы ПолныйРасчетИсхДанные (рис. 17.8).
Рис. 18.8. Подпрограмма РасчетВсехНалогов
Анализ подпрограммы РасчетВсехНалогов
Созданная подпрограмма обладает рядом недостатков: в процессе ее выполнения три раза создаются одинаковые формулы в столбцах АА и АС и после выполнения вычислений три раза уничтожаются. Но этот недостаток, полностью компенсируется простотой и, как следствие, унифицированностью макросов по расчету каждого налога в отдельности.
Включение рассчитанных сумм налогов в общий денежный поток
Задайте следующее условие — указание только самой суммы не является достаточным для включения этой суммы налогов в общую сумму денежных потоков. Достаточным условием для этого является ввод даты. Для этого введите в ячейки D5:D16, F5:F16 и H5:H16 даты предполагаемой оплаты этих налогов.
Итоги
Создание таблицы расчета налогов довольно несложно, но в этой главе описан довольно важный инструмент для создания подпрограмм — панель Отладки, при помощи которой присутствует возможность пошагового прохождения записанного макроса с контролем выполнения его действий.
|