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