#excel #vba #excel-formula
#excel #vba #excel-формула
Вопрос:
Я пытаюсь создать формулу в vba, и у меня проблема. Например, в ячейке C2 у меня есть десятичное число «4,62», и когда я пытаюсь использовать его в формуле, VBA использует запятую в качестве разделителя.
Код VBA:
Sheets("Feuil4").Range("C3").Formula = "=SUM(" amp; Range("C2") amp; ",[@[Prix total ens]])"
Если @[Prix total ens] = 5, конечный результат будет 71 (4 62 5 ).
Как я могу сделать так, чтобы запятая считывалась как запятая, а не как разделитель?
Кстати, я француз, поэтому я знаю, что для большинства из вас вы напишете 4.62 Спасибо.
Ответ №1:
Sheets("Feuil4").Range("C3").Formula = "=SUM(C2,[@[Prix total ens]])"
Комментарии:
1. @Eraaz Нет проблем. Если вам в конечном итоге потребуется, чтобы текст формулы был более динамичным, то для любого объекта диапазона вы могли бы использовать. Свойство адреса (например
= "=SUM(" amp; rng.Address amp; ",[@[Prix total ens]])"
)
Ответ №2:
Вы можете изменить свой разделитель списков в региональных настройках Windows.
Панель управления> Региональные и языковые параметры> Вкладка Региональные параметры. > Настройка / Дополнительные настройки> Введите новый разделитель в поле «Разделитель списка». > OK> OK
Комментарии:
1. другие люди будут использовать этот файл, так что это будет не очень практично…
Ответ №3:
Чтение десятичного числа из Excel и его использование в VBA — довольно сложная задача, если Excel использует запятую в качестве десятичного разделителя (немецкий и французский Excel).
Я разработал следующую функцию:
Public Function ChangeCommas(ByVal myValue As Variant) As String
Dim temp As String
temp = CStr(myValue)
ChangeCommas = Replace(temp, ",", ".")
End Function
В вашем случае:
Sheets("Feuil4").Range("C3").Formula = "=SUM(" amp; ChangeCommas(Range("C2")) amp; ",[@[Prix total ens]])"