如何解决是否有隐藏多列上的空行的代码?
我正在寻找使用切换按钮隐藏特定范围列的空行的代码。我有一个从 P9 到 U71 的表,我想要一个代码来隐藏不包含该特定表中任何数据的任何行。我已经尝试了几个代码,最近发布的代码如下,但是这个代码是基于 U 列中的值隐藏的,即使在同一行中有数据在不同的列中也是如此。请注意,我的编码经验为零,因此我感谢您对这个问题的任何帮助。
Sub Worksheet_Activate()
Dim r As Range,c As Range
Set r = Range("q9:u71")
Application.ScreenUpdating = False
For Each c In r
If Len(c.Text) = 0 Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next c
Application.ScreenUpdating = True
End Sub
解决方法
请尝试下一个代码:
Sub Worksheet_Activate()
Dim i As Long,rngH As Range
For i = 9 To 71
If WorksheetFunction.CountA(Range("P" & i & ":U" & i)) = 0 Then
If rngH Is Nothing Then
Set rngH = Range("P" & i)
Else
Set rngH = Union(rngH,Range("P" & i))
End If
End If
Next i
If Not rngH Is Nothing Then rngH.EntireRow.Select '.Hidden = True
End Sub
它只选择要隐藏的行。如果它按您的需要工作,请使用 .Hidden = True
而不是 Select
。
它应该非常快,将空单元格放置在一个范围内并在末尾立即隐藏 EntireRow
。
现在,如果处理范围内的单元格被代码修改,并且一些(已经)隐藏的单元格收到一个值,你不需要让它们可见吗?
我将关闭我的笔记本电脑。如果我上述问题的答案是肯定的,请使用下一个代码。如果没有,请不要使用它...
Sub Worksheet_Activate()
Dim r As Range,i As Long,rngH As Range,rngV As Range
For i = 9 To 71
If WorksheetFunction.CountA(Range("P" & i & ":U" & i)) = 0 Then
If rngH Is Nothing Then
Set rngH = Range("P" & i)
Else
Set rngH = Union(rngH,Range("P" & i))
End If
Else
If rngV Is Nothing Then
Set rngV = Range("P" & i)
Else
Set rngV = Union(rngV,Range("P" & i))
End If
End If
Next i
If Not rngH Is Nothing Then rngH.EntireRow.Hidden = True
If Not rngV Is Nothing Then rngV.EntireRow.Hidden = False
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。