Здравствуйте! Мне необходимо написать макрос для статистической обработки данных. При этом ссылки должны быть относительными, так как запускать его придется в разных местах в таблице. Мне потребовалось ввести цикл типа «do until _ loop», для того чтобы (см картинку) вычисление в третьем столбце продолжалось, пока следующая строка в первом столбце не будет пустой. При этом в формуле есть переменная Xi, которая берется из первого столбца и при выполнении тела цикла каждый раз спускается на один, как и должно быть, а есть Xn, которое должно оставаться неизменным, то есть я хочу, чтобы адрес остался относительным, поэтому не могу ввести фиксированный адрес этой ячейки, но если этого не сделать при второй операции в цикле он уже переходит на следующую строку. Я попыталась решить эту проблему заменой в адресе значения -1 как показано в исходном коде на Z и добавить в тело увеличение z по модулю на 1 (см исправленный код). Однако Excel выдает ошибку 1004 и прекращает выполнение макроса. В чем может быть ошибка? Может это как-то иначе записывается? Впервые пытаюсь программировать, поэтому возможно не понимаю очевидного.
Первоначальный цикл
Код |
---|
Sub Цикл3()
'
' Цикл3 Макрос
'
' Сочетание клавиш: Ctrl+с
' Начало с ячейки Xi #1
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "=(RC[-1]-RC[-2])^2"
Do While ActiveCell.Offset(1, -2) <> ""
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=(R[-1]C[-1]-RC[-2])^2"
Loop
End Sub |
Измененный цикл
Код |
---|
Sub Цикл3()
'
' Цикл3 Макрос
'
' Сочетание клавиш: Ctrl+с
' Начало с ячейки Xi #1
Dim z As Integer
z = 0
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "=(RC[-1]-RC[-2])^2"
Do While ActiveCell.Offset(1, -2) <> ""
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=(R[-1]C[-1]-R[z]C[-2])^2"
z = z - 1
Loop
End Sub
|