Страницы: 1
RSS
Синтаксис функции Application.Sum(Range()), Казалось бы всё просто, но пока не работает
 
Помогите, пожалуйста, правильно записать код макроса.
Необходимо в активную ячейку поместить сумму ячеек текущей строки, начиная со столбца D и заканчивая предыдущим столбцом для неё.
То есть что-то похожее на ActiveCell = Application.Sum ( Range ( "D & ActiveCell.Row : Offset (ActiveCell.Column-1, ActiveCell.Row)" )) только правильно записанное  :)  
Просьба не кидаться тапками - я не программирую на VBA профессионально. Заранее благодарю  :)
 
Код
1
with activecell: .value=application.sum(range(.cells(.row,"d"),.offset(,-1))): end with
не проверял - писано на коленке
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ActiveCell = Application.Sum ( Range ( Cells( ActiveCell.Row,4) , Cells ( ActiveCell.Row ,ActiveCell.Column-1)))
 
ikki, так работает не совсем корректно. Спасибо за отклик.
Kuzmich, это то что надо! Очень очень большое человеческое спасибо!
Создателям форума - низкий поклон. Очень хорошее дело.
 
гм... я вообще-то никакой существенной разницы с кодом Кузьмича не вижу...
ну да ладно.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Ikki
Возможно нужна точка перед Range?
 
ikki, я, к сожалению, не могу сказать что не так, но Ваш код и код Кузьмича возвращают разные результаты на одной и той же строке. Но код Кузьмича возвращает то же значение что и калькулятор.  :)
 
а, нашёл ошибку.
сорри.
не буду больше "с коленки" отвечать.
вот так должно работать:
Код
1
with activecell: .value=application.sum(range(.parent.cells(.row,"d"),.offset(,-1))): end with
Изменено: ikki - 16.08.2014 12:12:47
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Проверил  :)  Так работает точно!  :)  

На заметку: разница в том что Ваш код отрабатывает результат за 3 нажатия на F8, а код Кузьмича за 1. Но оба кода возвращают правильный результат.
Спасибо, ikki, я конечно не запомню как правильно, и в следующий раз скорее всего снова спрошу. И мне очень радостно, что здесь отвечают.
 
Цитата
innarecords пишет:
Ваш код отрабатывает результат за 3 нажатия на F8, а код Кузьмича за 1
:-)
 
innarecords иногда несколько строчек кода отрабатывают быстрей чем одна.
 
Совершенно верно. Не думаю, правда, что это применимо к данному случаю, но подсчитать количество циклов вычислений для каждого примера, не возьмусь :)

Юрий М,  :)  
 
У Саши (Ikki) всё тоже самое, только он обернул в конструкцию With - End with. Уберите обёртку - будет тоже по одному нажатию F8 ))
Страницы: 1
Читают тему
Loading...