Основным принципом будет использование события worksheet_SelectionChange, но вы, вероятно, захотите ограничиться определенными ячейками, так как в противном случае любая ячейка, выбранная на листе с событием, получит формулу. Спасибо @GMalc за разъяснение требований и предложение поправки.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Target.NumberFormat = "0000"
Application.EnableEvents = True
End Sub
Вы можете использовать Пересечение и указанный диапазон для ограничения определенными ячейками.
Код помещается в область кода листа, в котором должны отображаться формулы. Не в стандартной | модуль класса.