关于VBA:根据条件在Excel中自动隐藏行 | 您所在的位置:网站首页 › excel的代码隐藏 › 关于VBA:根据条件在Excel中自动隐藏行 |
我已经找到了对类似问题的几种答案,但我无法一辈子做到这一点。我试图根据单元格中的输入自动隐藏行。我在A列到J列中都有数据,并且我想自动隐藏在K列中输入值的任何行。我敢肯定这是可以做到的,但是我已经尽力尝试获取VBA宏工作! 任何帮助将不胜感激。 谢谢! 相关讨论 请发布您到目前为止尝试过的方法,以及尝试这种方法时失败的方法。 @Matt Marshal ...我在下面发布了答案,但是Mikegrann告诉您的是,并授予您"此处是新手"的意思是,您应该发布已经尝试过并且无法正常工作的代码,否则这里的任何人都很难为您提供帮助。 对于那个很抱歉。我尝试了一些通过搜索StackOverflow找到的项目,以及其他一些项目。他们似乎都不起作用,因此我删除了所有内容并决定重新开始。我将确保保存从现在开始的工作,以便我可以发布它。谢谢!您需要做的是在工作表中进行工作表更改事件。 将此代码放在工作表的代码部分中 12345Private 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中起作用,则可以编辑代码以使其同样起作用。 相关讨论 如果用户按下删除键怎么办?该行仍不会隐藏吗? OP表示,他想检测正在输入单元格中的某物,而不是按下删除键。 @Matt Marshall ...如果此解决方案为您提供了答案,请接受它作为解决方案。 转到" K"列中的任意位置,然后按Delete键,该行将被隐藏。这里是@dinotom的答案的变体。当您在K列中输入值时,它将隐藏整个行,但是如果您从K列中删除值,则不会隐藏整个行。 12345Private 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尝试一下。它循环遍历K列中的每个单元格,并隐藏带有任何文本的单元格。 123456789101112131415Sub 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如果您的第一行数据包含列标题,并且希望将其从过滤器中排除,请更改以下代码行: 1For Each c In Range("K1:K" & LastRow)为此: 1For Each c In Range("K2:K" & LastRow)希望这会有所帮助! 相关讨论 嗨,谢谢您的回复。我尝试了这一点,但是当我将值(字母或数字)放入K列中的任何单元格中时,什么也没有发生。我还需要做其他事情吗? 您的示例可以使用specialcells而不是循环Range("K2:K" & lastrow).SpecialCells(xlCellTypeConstants, 23).EntireRow.Hidden = 1 |
CopyRight 2018-2019 实验室设备网 版权所有 |