Excel vba увеличивает значение ячейки без создания круговой ссылки
У меня есть электронная таблица, в которой ячейки D4:D93
представляют собой выпадающие списки Data Validation с параметрами Yes
и No
as.
Я пытаюсь выяснить, как закодировать VBA так, чтобы при I4:I93
Yes
в ячейке этого диапазона значение в совпадающей ячейке в диапазоне I4:I93
изменяется на сумму совпадающих ячеек в I4:I93
и V4:V93
.
Я искал дни и пытался так много вещей, что даже не знаю, с чего начать, насколько я пробовал. Некоторые попытки не привели к тому, что ничего не произошло. Другие привели к замораживанию или сбою Excel из-за циклических ссылок. Не знаю, является ли это актуальным, но D4:D93
и I4:I93
являются частью таблицы, но V4:V93
– нет.
Попробуйте этот макрос события рабочей таблицы:
Private Sub Worksheet_Change(ByVal Target As Range) Dim D As Range, rw As Long Set D = Range("D4:D93") If Intersect(Target, D) Is Nothing Then Exit Sub If LCase(Target.Value) <> "yes" Then Exit Sub rw = Target.Row Application.EnableEvents = False Range("I" & rw).Value = Range("I" & rw).Value + Range("V" & rw).Value Application.EnableEvents = True End Sub
Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:
- щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel.
- выберите «Просмотреть код» – это вызывает окно VBE
- вставьте содержимое и закройте окно VBE
Если у вас есть какие-либо проблемы, сначала попробуйте его на пробном листе.
Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel позже 2003 года, вы должны сохранить файл как .xlsm, а не .xlsx
Чтобы удалить макрос:
- поднимите окна VBE, как указано выше
- очистить код
- закрыть окно VBE
Чтобы узнать больше о макросах в целом, см.
http://www.mvps.org/dmcritchie/excel/getstarted.htm
а также
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
Чтобы узнать больше о Макросах событий (код рабочей таблицы), см.
http://www.mvps.org/dmcritchie/excel/event.htm
Для этого необходимо активировать макросы!