Добрый день. Я пытаюсь создать макрос. Суть: выбираешь ячейку, активируешь макрос, получаешь вычисление в выделенной ячейке.
Какие исходные данные:
-Статичное число - указывается мной вручную. Для примера возьмём ячейку E5. -Множитель, на который умножаем статичное число - указывается мной вручную. Для примера возьмём ячейку C9. -Текущий результат - при активации макроса вычисляется числовое значение. Для примера возьмём ячейку E9. -Предыдущий результат - при активации макроса сюда переносится предыдущее значение ячейки E9. Для примера возьмём ячейку D9.
Мне, нужно:
1) чтобы при активации макроса вычисления происходили в выделенной ячейке и к текущему результату ячейки прибавлялся (а не заменялся) результат вычислений (например, в момент активации макроса выделена ячейка E9. К числу, которое в ячейке E9, прибавляется 5000. При повторной активации макроса - ещё прибавляется 5000. В ячейку E9 должно скопироваться число, а не формула);
2) чтобы в ячейку со смещением на 1 столбец влево от выделенной ячейки вносилось предыдущее значение, которое было в выделенной ячейке до активации макроса (например, в момент активации макроса выделена ячейка E9. В ячейку D9 копируется результат, который был в ячейке E9 до активации макроса);
3) чтобы определенные параметры макроса были динамическими - чтобы значения в формуле менялись относительно выделенной ячейки (например, если выделена ячейка E9, то вычисления осуществляются по формуле "=D9+$E$5*C9". Если выделена ячейка E10 - по формуле "=D10+$E$5*C10". Если выделена ячейка E11 - по формуле "=D11+$E$5*C11". Т.е. положение ячейки "Множитель, на который умножаем статичное число" и "Предыдущий результат" меняется относительно выделенной ячейки, а "Статичное число" - нет).
С первым пунктом я справился, а со вторым и третьим - нет.
Пока что макрос выглядит следующим образом:
[vba]
Код
Sub Kucherov() With Range("E9") .Formula = "=D9+E5*C9" .Value = .Value End With Range("E9").Select Selection.Copy Range("D9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
[/vba]
Помогите пожалуйста с макросом. Какой макрос должен получиться в итоге?
Добрый день. Я пытаюсь создать макрос. Суть: выбираешь ячейку, активируешь макрос, получаешь вычисление в выделенной ячейке.
Какие исходные данные:
-Статичное число - указывается мной вручную. Для примера возьмём ячейку E5. -Множитель, на который умножаем статичное число - указывается мной вручную. Для примера возьмём ячейку C9. -Текущий результат - при активации макроса вычисляется числовое значение. Для примера возьмём ячейку E9. -Предыдущий результат - при активации макроса сюда переносится предыдущее значение ячейки E9. Для примера возьмём ячейку D9.
Мне, нужно:
1) чтобы при активации макроса вычисления происходили в выделенной ячейке и к текущему результату ячейки прибавлялся (а не заменялся) результат вычислений (например, в момент активации макроса выделена ячейка E9. К числу, которое в ячейке E9, прибавляется 5000. При повторной активации макроса - ещё прибавляется 5000. В ячейку E9 должно скопироваться число, а не формула);
2) чтобы в ячейку со смещением на 1 столбец влево от выделенной ячейки вносилось предыдущее значение, которое было в выделенной ячейке до активации макроса (например, в момент активации макроса выделена ячейка E9. В ячейку D9 копируется результат, который был в ячейке E9 до активации макроса);
3) чтобы определенные параметры макроса были динамическими - чтобы значения в формуле менялись относительно выделенной ячейки (например, если выделена ячейка E9, то вычисления осуществляются по формуле "=D9+$E$5*C9". Если выделена ячейка E10 - по формуле "=D10+$E$5*C10". Если выделена ячейка E11 - по формуле "=D11+$E$5*C11". Т.е. положение ячейки "Множитель, на который умножаем статичное число" и "Предыдущий результат" меняется относительно выделенной ячейки, а "Статичное число" - нет).
С первым пунктом я справился, а со вторым и третьим - нет.
Пока что макрос выглядит следующим образом:
[vba]
Код
Sub Kucherov() With Range("E9") .Formula = "=D9+E5*C9" .Value = .Value End With Range("E9").Select Selection.Copy Range("D9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
[/vba]
Помогите пожалуйста с макросом. Какой макрос должен получиться в итоге?javzier987
Sub Kucherov() For Each cell In Intersect(Selection, Range("E9:E13")) With cell .Offset(, -1) = .Value .Value = .Offset(, -1) + .Offset(, -2) + Range("e5") End With Next End Sub
[/vba]
[vba]
Код
Sub Kucherov() For Each cell In Intersect(Selection, Range("E9:E13")) With cell .Offset(, -1) = .Value .Value = .Offset(, -1) + .Offset(, -2) + Range("e5") End With Next End Sub
дополню. я немного напортачил. Если ни одна из ячеек нужного диапазона не выделена, то скрипт даст ошибку, два варианта или всеж опору делать на активную ячейку [vba]
Код
Sub Kucherov() if Intersect(Activecell, Range("E9:E13")) is nothing then exit sub With activecell .Offset(, -1) = .Value .Value = .Offset(, -1) + .Offset(, -2) * Range("e5") End With End Sub
[/vba]
или обрабатывать все выделенные, но предварительно проверить [vba]
Код
Sub Kucherov() If Intersect(Selection, Range("E9:E13")) Is Nothing Then Exit Sub For Each cell In Intersect(Selection, Range("E9:E13")) With cell .Offset(, -1) = .Value .Value = .Offset(, -1) + .Offset(, -2) + Range("e5") End With Next End Sub
[/vba]
дополню. я немного напортачил. Если ни одна из ячеек нужного диапазона не выделена, то скрипт даст ошибку, два варианта или всеж опору делать на активную ячейку [vba]
Код
Sub Kucherov() if Intersect(Activecell, Range("E9:E13")) is nothing then exit sub With activecell .Offset(, -1) = .Value .Value = .Offset(, -1) + .Offset(, -2) * Range("e5") End With End Sub
[/vba]
или обрабатывать все выделенные, но предварительно проверить [vba]
Код
Sub Kucherov() If Intersect(Selection, Range("E9:E13")) Is Nothing Then Exit Sub For Each cell In Intersect(Selection, Range("E9:E13")) With cell .Offset(, -1) = .Value .Value = .Offset(, -1) + .Offset(, -2) + Range("e5") End With Next End Sub