ник: Анатолий (Киев)
ToBinary ="000000000000000000000000" не годится, т.к. аргумент Digits может иметь и другое значение.
Mid$(ToBinary, i, 1) = "1" здесь VBA создает в памяти еще одну константу, поэтому - хуже. А если бы константа ONE использовалась в десяти местах, и вместо нее везде указать "1", то будет создано 10 констант.
Optional Digits As integer = 24. Как раз Long (4 байта) для 32 разрядных систем - самый любимый размер. Integer, а, тем более, Byte требуют от системы некоторого напряга.
Добавлено: На заметку - возведение в степень - самая медленная (ну очень) арифметическая операция в VBA.
Другое дело, что в аргументы функции лучше добавить ByVal. Это может и медленнее, зато - надежнее.
ЗЫ. С интнресом наблюдаю за изысканиями сообщества. Вот если бы еще тема была поважнее...