VBA преобразует мое десятичное число в разделитель формул

#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]])"