Excel VBA - динамическое изменение значения ячейки на основе значения в двух столбцах - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу, чтобы код vba динамически изменял значение ячейки на основе значений, введенных в двух столбцах.Но код не работает.

Пожалуйста, кто-нибудь, помогите мне узнать процесс.

Спасибо

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim r As Long

If Not Intersect(Range("G:H"), Target) Is Nothing Then
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    For Each rng In Intersect(Range("G:H"), Target)
        r = rng.Row
        If Range("G" & r) = 5 And Range("H" & r) = "A" Then
            Range("I" & r) = "M"
            Range("I" & r).Interior.ColorIndex = 3
        ElseIf Range("G" & r) = 5 And Range("H" & r) = "B" Then
            Range("I" & r) = "H"
            Range("I" & r).Interior.ColorIndex = 4
        Else
            Range("I" & r).Interior.ColorIndex = 0                                  
        End If
    Next rng
End if
End Sub

1 Ответ

0 голосов
/ 05 декабря 2018

Как только вы выполняете Range («I» & r) =, вы запускаете событие смены листа снова, и снова, и снова.Если вы хотите изменить ячейки в событии изменения, вам нужно отключить событие изменения в подпрограмме

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = false

, а затем включить его в конце

Application.EnableEvents = true
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...