我已经找到了几个类似问题的答案,但我不能让这个为我的生活工作。我试图根据单元格中的输入自动隐藏行。我在A列到J列中有数据,我想自动隐藏我在K列中输入值的行。我确信这可以完成,但我最终想要让VBA宏工作!
非常感谢任何帮助。
谢谢!
答案 0 :(得分:2)
您需要的只是工作表中的工作表更改事件。 将此代码放在工作表的代码部分
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 Then ' Column K is column number 11
Target.EntireRow.Hidden = True
End If
End Sub
当您更改列k中任何单元格中的值时,它将隐藏整行 如果您只希望它在UsedRange中工作,您可以编辑代码以便以这种方式工作。
答案 1 :(得分:0)
试试这个。它遍历K列中的每个单元格,并用任何文本隐藏单元格。
Sub AutoHideRows()
'Get the last row of the used range
Dim LastRow As Long
LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
'Loop through the range looking for non-blank values, and hide those rows
Dim c As Range
For Each c In Range("K1:K" & LastRow)
If c.Value <> "" Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next c
End Sub
如果您的第一行数据包含列标题,并且您想要将其从过滤器中排除,请更改以下代码行:
For Each c In Range("K1:K" & LastRow)
到此:
For Each c In Range("K2:K" & LastRow)
希望这有帮助!
答案 2 :(得分:0)
这是@dinotom答案的变体。当您在列K中输入值时,它会隐藏整行,但如果您从列K中删除值,则会隐藏整行。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 And Target.Value <> "" Then ' Column K is column number 11
Target.EntireRow.Hidden = True
End If
End Sub