Como obter uma ação do VBA para trabalhar em várias linhas

0

Acrescentei isso seguindo o VBA em uma planilha minha: a premissa básica é ter uma folha de verificação decrescente para que o usuário insira um total de cheques.

Se corresponder à quantidade na planilha, a célula na coluna M mostrará Validated e ocultará automaticamente a linha

A questão é que isso só funciona com a primeira linha, as linhas subseqüentes não se escondem. Alguma idéia?

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
    
por Andy Stevens 03.05.2018 / 17:50

1 resposta

0

Use uma das 3 opções abaixo (3 construções lógicas diferentes)

.

Versão 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

.

Versão 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

.

Versão 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
    
por 04.05.2018 / 23:02