Страницы: 1
RSS
Ошибка VBA 1004 при выполнении кода
 
Добрый день!
Подскажите пожалуйста, почему при выполнении след.процедуры возникает ошибка 1004, Application defined or object defined error?
Код
Sub накопительная()
Dim s As Variant
s = ActiveCell.Value
ActiveCell.FormulaR1C1 = "=RC[4]+" & s
End Sub
 
что у вас хранится в переменной s после выполнения s = ActiveCell.Value ?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Значение активной ячейки. В самой ячейки может быть и формула.
Вообще искомым результатом должна быть формула которая берет именно значение из "текущей" активной ячейки и складывается со значением в ячейки отстоящей от неё на 4 позиции справа. Мне нужна именно формула. Свойство offset неподойдет, поэтому и исползую ссылку. Это своего рода накопительная по месяцам, но результат предыдущего месяца должен быть отражен в формуле как значение.
 
это всё понятно.
вопрос был в другом.
у вас возникла ошибка
чему в этот момент равно s?

вы отладчиком умеете пользоваться?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
:) нет. Как раз сейчас читаю про это у Уокенбаха.
 
У меня работает. в А1 - 4, в Е1 - 6, курсор на а1. Результат: в А1 - 10.
Я сам - дурнее всякого примера! ...
 
Не работает тогда и именно в таблицах где данные забиты. Подмечено, что если открыть файл и перебить значение, то макрос срабатывает для этой ячейки, а для последующих данных опят сбоит.
 
может тип данных поменять на double?
 
FINic, Вам лучше посетить форум гадалок. Раз не хотите выложить пример, где у Вас не работает. Это что, так тяжело?
Я сам - дурнее всякого примера! ...
 
В 2003 код работает без проблем.
Интересно, в какой задаче может потребоваться такой "жесткий" код?
 
У меня другой вопрос - зачем туда вообще формулу пихать, раз уж используем макрос?
Код
Sub накопительная() 
     ActiveCell.Value =ActiveCell.Value +ActiveCell.offset(,4).Value
End Sub

Цитата
FINic пишет:
Свойство offset неподойдет, поэтому и исползую ссылку
"=RC[4]" - а это что по Вашему? Абсолютно то же что и offset(,4) :D
Изменено: KuklP - 03.08.2013 18:27:03
Я сам - дурнее всякого примера! ...
 
Цитата
FINic пишет:
Свойство offset неподойдет,
Это почему?
 
Ошибка будет возникать при несовпадении типов. Т.е. если в переменной s будет текст - получите ошибку.
Я бы посоветовал в таком случае делать проверку:
Код
If isnumeric(s) then
    ActiveCell.FormulaR1C1 = "=RC[4]+" & s
end if
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
KuklP пишет:
Зачем туда вообще формулу пихать, раз уж используем макрос?
И я о том же...
Похоже, это - абстрактная задачка-пример из очень умного учебника.
 
The_Prist, Спасибо!
Мотя,, KuklP, Размышления о "жесткости вещей" особой пользы не принесёт, когда заданны строгие первоначальные условия совсем не абстрактной задачи. "мы знаем что задачка не имеет решения, но нам необходимо знать как её решать".
The_Prist, еще раз спасибо!
 
Цитата
FINic пишет:
The_Prist,
т.е. Вы не в состоянии были самостоятельно понять, что пытаетесь складывать число с нечислом?  :D Мы-то этого не видели, а Дима молодец, угадал...
Я сам - дурнее всякого примера! ...
 
KuklP, Да, Дима молодец, Вы - нет. :idea:

Тема закрыта
 
Я никогда и не утверждал, что экстрасенс. И кто же тогда Вы?
Я сам - дурнее всякого примера! ...
 
видимо, Уокенбах так и остался недочитанным  :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
KuklP пишет:
а Дима молодец, угадал...
Цитата
KuklP, Да, Дима молодец, Вы - нет.
FINic, зря Вы так... Ведь даже на чисто бытовом уровне это бессмысленно - например, суммировать понедельник и градусы.
Страницы: 1
Наверх