2014-02-14 5 views
1

Я сделал небольшую надстройку для Excel. Но по какой-то причине он терпит неудачу. После нового запуска excel он отлично работает, однако, когда я копирую текст в excel и пытаюсь запустить его, он дает мне ошибку: время выполнения «1004», метод «Значение» объекта «диапазон» не удался.Ошибка визуальной базовой 1004 Excel, метод 'значение' объекта 'range' failed

Что я пытаюсь сделать, это просто. Мне нравится строить формулу вроде: (B5 + B6)/2 без использования «=» спереди, поэтому Excel не вычисляет эти выражения. Я закончил с одним большим столбцом, и после того, как я закончен, я хотел бы выбрать первую ячейку столбца с вычислениями, активировать мою надстройку, и он ставит перед собой «=» и сворачивает вниз до пустой ячейки. Таким образом, теперь вычисляется каждая ячейка в моей колонке.

Я потерян, вы можете мне помочь?

Sub makeFormula() 
Do 
ActiveCell.Value = "=" & ActiveCell.Value 
ActiveCell.Offset(1, 0).Select 
Loop While ActiveCell.Value <> Empty 
end Sub 
+0

Являются ли значения в ваших ячейках числовыми или текстовыми? Если они не являются числовыми, вам нужно «ActiveCell.Formula =» = «" »& ActiveCell.Value &" "" "' –

+0

Я думаю, что эта проблема связана с процессом «призрака» excel и пытается ссылаться на элементы на том. Использование activesheet или диапазона или обращение к объекту книги, похоже, нарушает его, а также использование команд «With» на рабочем столе или на рабочем листе. Я понимаю, что вам нужно быть deligant и устанавливать свои объекты в ничто, но у меня все еще есть программа, которая прерывает каждый другой запуск с этой ошибкой. Используйте диспетчер задач и убейте процесс excel, и он должен запуститься. – Acantud

ответ

0
Sub makeFormula() 
Dim c as range 
Set c = selection.cells(1) 'in case >1 cell is selected 
do while len(c.value) > 0 
    'need to put quotes around the value if not a number 
    'c.Formula = "=""" & c.Value & """" 
    'use this if the value is a valid formula without = 
    c.Formula = "=" & c.Value 
    Set c=c.Offset(1, 0) 
Loop 
End Sub 
+0

спасибо за такой быстрый ответ, но пока не повезло, когда я пробую ваш код, ничего не происходит. Может быть, я не знал о своей цели. Я хотел бы выбрать ячейку, а затем активировать свою надстройку, эта надстройка затем добавит '=' перед содержимым ячейки, чтобы excel принял ее как функцию и вычислил ее. Он повторяет это с каждой ячейкой в ​​столбце, пока не прочитает пустую ячейку. – ruben

+0

Это может помочь, если вы уточните свой вопрос, чтобы уточнить, что именно находится в ячейках, которые вы хотите преобразовать в формулы. Если вам не нужны кавычки вокруг значения ячейки, тогда не включайте их ... –

+0

Возможно, я дал понять это на этот раз. – ruben

0

Вы должны передать ваше значение для переменной временной строки. Работал для меня:

Sub makeFormula() 
    Dim Temp As String 
    Do 
     Temp = ActiveCell.Value2 
     ActiveCell.Formula = "=" & Temp 
     ActiveCell.Offset(1, 0).Select 
    Loop While ActiveCell.Value2 <> Empty 
End Sub 
+0

Я пробовал этот, но все равно не повезло. Я скопировал из другого файла excel: (2,1 + 0,3) * 3,6 снова активировал надстройку и ту же ошибку. Затем я изменил запятую на точки, и это сработало ... Так что кажется, что запятые являются проблемой – ruben

2

Я нашел решение, при отладке я обнаружил, что запятые проблема, поэтому я изменить запятую в точку, а затем рассчитать. И теперь это работает как шарм.

Sub makeFormula() 
Dim Temp As String 
Do 
    Temp = ActiveCell.Value2 
    Temp = Replace(Temp, ",", ".", 1) 
    ActiveCell.Formula = "=" & Temp 
    ActiveCell.Offset(1, 0).Select 
Loop While ActiveCell.Value2 <> Empty 
End Sub 

Спасибо за все ваши предложения.

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