2016-08-18 4 views
3

Я написал простой код в VBA (и видел вопросы here и here и ни одно из этих решений не работает).Изменение десятичного разделителя в VBA

  Dim toString As String 
      toString = cell.Value & "_" 
       If (InStr(toString, ",")) Then 
       toString = Replace(toString, ",", ".") 
       toString = Trim(toString) 
       cell.Value = " " + Left(toString, (Len(toString) - 1))    
       End If 

К сожалению, вместо строки с точкой сепаратора, первенствует дает мне два раз с запятой в cell.Value. Любопытно, когда я обмениваюсь этим пробелом с помощью «_», он преобразует f. ех. 12,3 в _12.3. Как я могу это исправить?

P.S. Я добавляю «_» в конец, чтобы гарантировать, что toString останется String.

+0

Что должна делать эта линия? 'cell.Value =" "+ Left (toString, (Len (toString) - 1))' – Andreas

+0

@Andreas Сначала это выглядело так: 'cell.Value = Left (toString, (Len (toString) -1))' но Я обнаружил, что cell.Value изменяется на double, поэтому я попытался добавить пробел, чтобы преобразовать его в строку, но безуспешно. – lawstud

ответ

2

У меня была эта проблема раньше. Вам необходимо изменить форматирование ячейки, прежде чем писать на нее.

Application.Workbooks("Book1").Sheets("Sheet1").Range("A1:A100").NumberFormat = "@" 

После запуска этой линии вы можете просто написать колонку, как это:

Cells(1,1).Value = "12.3" 

Excel сохранит форматирование строк и не превратить его в дубль.

Надеюсь, это поможет.

+0

Он работает! Благодаря :) – lawstud

Смежные вопросы