Я добавил этот следующий VBA на мой рабочий лист: основная предпосылка - иметь уменьшающуюся контрольную таблицу, чтобы пользователь вводил контрольную сумму.

Если это соответствует количеству на листе, ячейка в столбце M покажет Validated и она автоматически скроет строку

Проблема в том, что это работает только с первой строкой, последующие строки не скрываются. Есть идеи?

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("M2").Value = "Validated" Then
        Rows("2").EntireRow.Hidden = True
    ElseIf Range("M2").Value = "Re-Check" Then
        Rows("2").EntireRow.Hidden = False

    End If
End Sub

1 ответ1

0

Используйте один из 3 вариантов ниже (3 различных логических конструкции)


,

Версия 1


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Const CHECK_COL = "M"

    Dim tRow As Long, mVal As String

    tRow = Target.Row
    mVal = LCase(Me.Range(CHECK_COL & tRow).Value2)

    Me.Rows(tRow).Hidden = (mVal = "validated")
End Sub

,

Версия 2


Private Sub Worksheet_Change(ByVal Target As Range)

    Const CHECK_COL = "M"

    Dim tRow As Long, mVal As String

    tRow = Target.Row
    mVal = LCase(Me.Range(CHECK_COL & tRow).Value2)

    Select Case mVal
        Case "validated":   Me.Rows(tRow).Hidden = True
        Case "re-check":    Me.Rows(tRow).Hidden = False
    End Select
End Sub

,

Версия 3


Private Sub Worksheet_Change(ByVal Target As Range)

    Const CHECK_COL = "M"

    Dim tRow As Long, mVal As String

    tRow = Target.Row
    mVal = LCase(Me.Range(CHECK_COL & tRow).Value2)

    If mVal = "validated" Then
        Me.Rows(tRow).Hidden = True
    ElseIf mVal = "re-check" Then
        Me.Rows(tRow).Hidden = False
    End If
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .