#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
, и числовое строковое значение будет преобразовано в число.