Как мне отформатировать скопированный текст ячейки как число?

#excel #vba

#excel #vba

Вопрос:

У меня есть формула vba, которая копирует значение (состоящее из числа) ячейки в другую ячейку. Когда число с десятичными дробями (например, 25,50), результат в порядке, но когда число без десятичных дробей (например, 50), я получаю флаг проверки ошибок, предлагающий мне преобразовать эту ячейку в число.

У меня не возникло бы проблем с этой ошибкой, но я не могу использовать результат в формуле. Например, если я использую SUM(A:A) , формула добавляет все числа, кроме помеченных.

До сих пор я пытался вставить с помощью .xlPasteValuesAndNumberFormats свойства, но безуспешно.

 Sub Adauga()
Dim i As Range
Dim cellTaxa As Range

Set cellTaxa = ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(1, -2) 'Here I set the range to the value of a cell that is related to the button I click. 

n = 2
Set i = Sheets("TJT DETERMINABILA").Cells(n, 10) 'Here I insert the first result
Do While i <> "" 'Here I find the next empty cell in the same column to insert the value.
    n = n   1
    Set i = Sheets("TJT DETERMINABILA").Cells(n, 10)
Loop

cellTaxa.Copy 'Here I copy the cell
i.PasteSpecial xlPasteValues 'Here I paste the cell. 

End Sub
  

Я хотел бы иметь возможность использовать значения, которые вставлены в столбец, который я упомянул в коде с SUM формулой.
Спасибо!

Комментарии:

1. Добавление 0 в конец — это простой трюк для преобразования текста в цифры (учитывая, что текст должен быть преобразован в число).

2. @urdearboy Где именно я должен поставить 0 в коде vba? Я подумываю о добавлении следующего кода: cellTaxa = CellTaxa 0 .

3. @urdearboy, я пытался добавить вышеупомянутый код раньше cellTaxa.Copy , но это не сработало. Я все еще получаю желтую отметку исключения.

4. Попробуйте i = i 0 после вставки. Или i.value = i.value = 0 . Вы также могли бы использовать Text to Columns

5. Спасибо, это сработало. Обходной путь заключался в том, чтобы поместить `cellTaxa = CellTaxa 0. Вы были правы.

Ответ №1:

Как заявил @urdearboy, простой способ преобразовать текст в числа — добавить 0 .

В моем случае я добавил cellTaxa = CellTaxa 0 перед строкой cellTaxa.Copy , и это решило мою проблему.

Комментарии:

1. С VBA нет необходимости в 0 . Пока ячейка не отформатирована как текст, вы можете просто сделать cellTaxa=cellTaxa , и числовое строковое значение будет преобразовано в число.