如何使 VBA 操作在多行上运行

如何使 VBA 操作在多行上运行

我已将以下 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

使用以下 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

相关内容