Для пользовательских форматов, которые уже включают десятичную точку, вместо:
myformat = myformat & "0"
Было бы более надежно использовать:
myformat = replace(myformat,".",".0")
Это обеспечит добавление дополнительного 0 после всех десятичных знаков, в том числе в пользовательских форматах чисел с несколькими разделами, таких как:
#,##0.00;[Red]-#,##0.00
Чтобы добавить десятичную точку к число, в котором еще нет десятичной точки, вместо:
myformat = "0.0"
использование:
myformat = replace(myformat,"0","0.0")
Обратите внимание, что оно все еще не будет обрабатывать все возможные пользовательские форматы чисел, которые потребуют огромного количества разбора, но он должен обрабатывать стандартные типы форматов, как в вашем примере.
Чтобы удалить десятичные точки, выполните обратное:
myformat = replace(myformat,".0",".")
Это приведет к тому, что после удаления всех нулей останется десятичная точка, однако это можно сделать, проверив, содержит ли формат чисел десятичные точки, за которыми не следуют нули:
If InStr(myformat, ".") > 0 and InStr(myformat, ".0") = 0 then
myformat = replace(myformat,".","")
End if