Событие изменения, вызванное изменением значения ячейки - PullRequest
0 голосов
/ 28 октября 2019

Я хочу скрыть столбцы со значением 0 в диапазоне G4: FC4 Ячейка может принимать значения 0 (в этом случае столбцы должны быть скрыты) или 1 (в этом случае они должны быть видны). Значение 0 или 1 основано на формуле и зависит от раскрывающегося входного значения в ячейке D2. Когда я вручную изменяю значение в D2, макрос работает нормально, но когда я использую выпадающий список, это не так. Пожалуйста, найдите ниже мой код. Любой совет?

Большое спасибо

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Dim c As Range
    For Each c In Sheets("P_MM6").Range("G4:FC4").Cells
        c.EntireColumn.Hidden = True
        If c.Value = 1 Then
            c.EntireColumn.Hidden = False
        End If
    Next c

End Sub

1 Ответ

2 голосов
/ 28 октября 2019

Изменение вручную по сравнению с раскрывающимся списком не должно иметь значения, за исключением случаев, когда, возможно, где-то еще в вашем коде события отключаются и не включаются снова, или, возможно, вычисления устанавливаются вручную и, таким образом, не приводят к изменению значения формулы,поэтому, даже если код срабатывает, значения столбцов не изменяются.

Тем не менее, приведенный ниже код поможет вам, потому что он не будет пытаться скрыть / показать при каждом изменении ячейки, но только при изменении D2.

Private Sub Worksheet_Change(ByVal Target As Range)

    If target.address = "$D$2" Then

        Dim c As Range
        For Each c In Sheets("P_MM6").Range("G4:FC4").Cells
            c.EntireColumn.Hidden = c.Value = 0
        Next c

     End If

End Sub

Также убедитесь, что вычисления установлены в автоматический режим и они не отключаются где-то в вашем коде, а также что события не отключаются и не включаются сноваостальное в коде.

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

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