2

Вот мой код, но на самом деле он ничего не делает, я не вижу в этом ничего плохого:

Private Sub PG1(ByVal Target As Range)
    If .Range("E50").Value = "Passed" Then
        Rows("51").EntireRow.Hidden = True
    End If
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51").EntireRow.Hidden = True
    End If
End Sub

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

3 ответа3

8

Похоже, в вашем коде есть некоторые опечатки. Вы хотите что-то вроде этого:

Sub PG1()

    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False
    End If

End Sub

Чтобы обновить строку скрыть / отобразить при изменении листа, поместите его в событие Worksheet_Change :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False

    End If
End Sub
1

не было опечатки. "строки (51)" является действительным. но вам не нужен модификатор "wholerow"

rows(n).hidden=true    ; where n is an valid row number

скрыть несколько строк

 range(rows(n1),rows(n2)).hidden=true ; will hide rows n1 though n2
-1
Private Sub PG1()
    Range("$E$51").EntireRow.Hidden = (Range("$E$50").Value = "Passed")
End Sub

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