Работать будет.
Но нужно контролировать значение a (если оно по какой-то причине не будет изменяться - попадете в бесконечный цикл).
Напоминаю, что при вызове макроса его локальные переменные переинициализируются - нужно либо сохранять результаты в память панели и при вызове макроса считывать их оттуда, либо использовать статические переменные.
Вообще, для выполнения какого-либо действия заданное количество раз лучше использовать цикл for.