Страницы: 1
RSS
Проверка условия на большом диапазоне ячеек
 
Доброе времени суток.
При изменение ячейки В4 срабатывает счетчик +1 в ячейке В7 и ячейка В9 обнуляется.

Счетчик реализован на условии If
Код
    If Target.Address = "$B$4" Then
           Range("B7") = Range("B7") + 1
           Range("B9") = 0
     End If 

Если ячеек не много, то все работает. А если нужно несколько десятков, получается очень много строк кода. Как реализовать конструкцию в цикле или как то общеописательно, что бы был один блок кода и он применялся для всех ячеек диапазона? Адреса строк всегда одни и те же, меняется только столбцы.
Т.е. В4, В7, В9, следующий С4, С7, С9 и так далее
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Row <> 4 Then Exit Sub
  If Target.Column < 2 Or Target.Column > 13 Then Exit Sub
  Application.EnableEvents = False
  Target.Offset(3) = Target.Offset(3) + 1
  Target.Offset(5) = 0
  Application.EnableEvents = True
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо, все работает.
А имеется ли способ аналогичным образом уменьшить количество строк кода для условия
Код
If Range("B7") > Range("B6") Then Range("B6") = Range("B7")

Т.е. сравниваются значения В7 и В6, С7 и С6 и т.д. и если В7>В6, В6 присваивается значение В7 (в каждом столбце аналогичная проверка).
Опять же что бы не писать кучу строк кода для каждого столбца.
 
вы все правильно написали - способ абсолютно аналогичный (и, понятно, он есть)
Изменено: Ігор Гончаренко - 16.04.2021 06:58:22
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх