Я хочу запрограммировать sub, который проверяет, является ли значение в ячейке форматированным как валюта, а затем проверяет, равна ли эта валюта или что-то еще. На основании результата пользователю должно быть предложено ввести InputBox, чтобы ввести фактический обменный курс между данной валютой и евро. Затем sub делает некоторую математику и выставляет рассчитанное значение €, отформатированное как валюта в € обратно в ячейку.
Просматривая SO, я нашел идею использовать .NumberFormat
по значению ячейки, а затем использовать InStr(1, cellValue, "€") = 0
, чтобы проверить, является ли она валютой € или нет.
Теперь я использую немецкую версию Excel и короткий тест с Debug.Print Range("A1").NumberFormat
дает мне это: #,##0.00 $
. Поэтому, даже если мой Excel показывает мне как валюту, вместо этого VBA дает мне $.
Как я могу обойти это? Я полагаю, что #,##0.00 $
является логической базой Excel, в то время как он использует стандартный язык в качестве своей логики интерфейса и отображает валюту на основе выбранного языка?
'If InStr (1, cell.NumberFormatLocal, "€") Тогда DoSomeStuff' , Ключ NumberFormatLocal –
Пробовал. Вывод «.NumberFormatLocal» - «Стандартный». Пробовал это с форматом $ и $. И то же самое. –
О! Как странно. Это дает мне мою местную валюту. Еще одна из этих странных вещей. Ответ Гэри должен всегда работать. –