Измените стиль одной ячейки (на Bad), когда другая ячейка была недавно отредактирована

Я пытаюсь сделать инструмент, который является безумным для использования.

Пример; когда кто-то редактирует ячейку H2 вообще (даже если они не меняют ее, пока они начинают фазу редактирования), я хочу, чтобы ячейка H3 сразу изменила ее стиль на Bad (красный). То же самое для редактирования H30; изменяя H31, H58, изменяя H59, и H86 меняя H87.

Это будет сделано через VBA или условное форматирование?

Просто проверьте изменение в событии Worksheet_Change . Поместите что-то подобное в соответствующий модуль кода рабочего листа:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim addr As String addr = Target.Address Select Case addr Case "$H$2", "$H$30", "$H$58", "$H$86" Target.Offset(1).Style = "Bad" End Select End Sub 

вы также можете использовать:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("H2, H30, H58, H$86")) Is Nothing Then Target.Offset(1).Style = "Bad" End Sub 

кроме того, вы можете предупредить пользователей, как только они войдут в любую запрещенную ячейку, применив стиль «Alert» и удалите его, если оставить его без изменений

в этом случае вы можете попробовать этот код:

 Option Explicit Const forbiddenRngAddr As String = "H2, H30, H58, H$86" Dim oldRng As Range Dim oldValue As Variant Dim oldStyle As String Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range(forbiddenRngAddr)) Is Nothing Then Target.Offset(1).style = "Bad" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not oldRng Is Nothing Then If Not Intersect(oldRng, Range(forbiddenRngAddr)) Is Nothing Then If oldValue = oldRng.Value Then oldRng.Offset(1).style = oldStyle End If End If With Target If Not Intersect(.Cells, Range(forbiddenRngAddr)) Is Nothing Then oldStyle = .Offset(1).style .Offset(1).style = "Alert" End If Set oldRng = .Cells oldValue = .Value End With End Sub 

Наконец, вам понадобится более четкий код, если вам удастся обработать любую поправку пользователя, возможно, после блуждания по ячейкам

Здесь я использовал комментарии для хранения некорректно измененных значений старого значения и стиля ячейки, которые нужно восстановить и проверить для последующих пользовательских входов

 Option Explicit Const forbiddenRngAddr As String = "H2, H30, H58, H$86" Dim oldRng As Range Dim oldValue As Variant Dim oldStyle As String Private Sub Worksheet_Change(ByVal Target As Range) With Target If Not Intersect(.Cells, Range(forbiddenRngAddr)) Is Nothing Then If .Comment Is Nothing Then .Offset(1).style = "Bad" With .AddComment .Visible = False .Text oldValue & "|" & Target.style End With Else If .Text = Split(.Comment.Text, "|")(0) Then .Offset(1).style = Split(.Comment.Text, "|")(1) .Comment.Delete Else .Offset(1).style = "Bad" End If End If End If End With End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not oldRng Is Nothing Then If Not Intersect(oldRng, Range(forbiddenRngAddr)) Is Nothing Then If oldValue = oldRng.Value Then oldRng.Offset(1).style = oldStyle End If End If With Target If Not Intersect(.Cells, Range(forbiddenRngAddr)) Is Nothing Then oldStyle = .Offset(1).style .Offset(1).style = "Alert" End If Set oldRng = .Cells oldValue = .Value End With End Sub 
  • сбой в циклическом формате vba
  • Значок Excel установлен для сравнения с предыдущей ячейкой
  • Условное форматирование Apache POI - getNumConditionalFormattings всегда возвращается 0
  • Как выделить ячейку с использованием значения цвета гексагональной ячейки?
  • XLS - Условное форматирование - Пример Java POI
  • Применение индивидуального условного форматирования в VBA - ОЧЕНЬ МЕДЛЕННО
  • Запись фрейма данных Python в документ Word / Excel с определенным форматированием
  • Невозможно оценить Условное форматирование функции COUNTIF
  • Выделите ячейки в строке, где значение конкретной ячейки отличается от значения предыдущей строки
  • Ошибка с условным форматированием (и, возможно, личная формула)
  • Конкатенированное сравнение VLookup для условного форматирования
  • Interesting Posts
    Давайте будем гением компьютера.