Может кто-нибудь, пожалуйста, помогите, почему эта строка кода дает мне ошибку, определенную объектом

0

activeCell.FormulaR1C1 = "=SUM(" & activeCell.Offset(0, -2).Address & "+" & activeCell.Offset(0, -4).Address & "+" & activeCell.Offset(0, -6).Address & "+" & activeCell.Offset(0, -8).Address & "+" & activeCell.Offset(0, -10).Address & ")"

Акшай
источник
1. Вы не используете +в SUMфункции Excel, либо используете разделитель списка ( ,или ;), либо не используете SUM. 2. Какой у вас activeCell? Может быть, OFFSETвытесняет это с листа?
Матэ Юхас
Удалите СУММУ, используйте однократное сложение.
Акина
@ MátéJuhász Какой у тебя activeCell? В этом случае это не имеет значения - существует некоторая ActiveCell (если не сообщение об ошибке должно отличаться), и все выражения выражений ссылаются на нее (формула локализована на листе). Может быть, OFFSET вытесняет его с листа? Это можно обнаружить на этапе расчета, а не при вводе формулы.
Акина
@ MátéJuhász Да. При назначении формулы ячейке с использованием кода VBA условие «вне рабочего листа» не проверяется, поэтому оно не может быть источником рассматриваемой ошибки. Это должна быть «Ошибка приложения или объекта» из-за ошибки в методе Offset.
Акина
Если вы хотите использовать СУММУ то ,,Activecell.Formula = "=SUM(G13,I13,K13)"
Раджеш

Ответы:

1

Скорее, чем

activeCell.Offset(0, -2).Address

использовать это,

activeCell.Offset(0, -2).Address(RowAbsolute:= False, ColumnAbsolute:= False)
Акшай
источник
Но это только вернет адрес ячейки, а что такое SUM как ваш OP?
Раджеш
Формула для суммы не изменится, она останется прежней. Таким образом, в конце он будет выглядеть следующим образом: activeCell.FormulaR1C1 = "= SUM (" & activeCell.Offset (0, -2). (0, -4) .Address (RowAbsolute: = False, ColumnAbsolute: = False) & "," _ & activeCell.Offset (0, -6) .Address (RowAbsolute: = False, ColumnAbsolute: = False) & ") "
Акшай