excel - 如何隐藏某一列中包含空白单元格的所有行?
问题描述
我试图隐藏在某一列(SOW 选项卡中的 H 列)中具有空白单元格的所有行。
此相同的宏(不同的行但相同的语法)在此工作簿的第三个选项卡上工作。我检查了,范围内的每一行都是正确的。会不会是范围太长了?
Sub HideRowsInSOW_LOOP()
Dim r As Range, c As Range
Set r = Range("H27:H46,H48:H67,H69:H88,H90:H109,H111:H130,H132:H151,H153:H172,H174:H193,H195:H214,H216:H235,H237:H256,H258:H277,H279:H298,H300:H319,H321:H340,H342:H361,H369:H388,H390:H409,H411:H430,H432:H451,H453:H472,H474:H493,H495:H514,H516:H535,H537:H556,H558:H577,H579:H598,H600:H619,H621:H640,H642:H661,H663:H682,H684:H703")
Application.ScreenUpdating = False
For Each c In r
If c.Value = 0 Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next c
Application.ScreenUpdating = True
End Sub
运行此程序时,我收到以下错误:
运行时错误“1004”错误消息:对象“_Global”的方法“范围”失败
我有一个更长的宏,它成功地达到了同样的目的,我担心它会减慢我的工作簿/继续听到循环更好。
解决方案
您的代码可能不适用于相关工作表,因为范围不完全合格。Set r = Range("H27:H46,...
. 该范围是指活动表。
这是一种AutoFilter
隐藏列中空白行的方法。这比在庞大的数据集中循环要快得多。
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim lRow As Long
Dim rngColH As Range
Dim rngToHide As Range
'~~> Chage this to the relevant sheet
Set ws = Sheet1
With ws
'~~> Remove any autofilter if any
.AutoFilterMode = False
'~~> Find last row in Col H
lRow = .Range("H" & .Rows.Count).End(xlUp).Row
'~~> Construct your range
Set rngColH = .Range("H1:H" & lRow)
'~~> Filter on blanks
With rngColH
.AutoFilter Field:=1, Criteria1:="="
'~~> These are your blank rows (i.e if there are any)
Set rngToHide = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
End With
.AutoFilterMode = False
'~~> Hide the rows
If Not rngToHide Is Nothing Then rngToHide.Hidden = True
End With
End Sub
下面是它的工作原理...
按照@Mikku 的建议使用.SpecialCells(xlCellTypeBlanks)
也是一个好方法:)
推荐阅读
- azure-functions - Azure Function cosmosdb 环境设置
- javascript - 对如何使用 axios 正确处理 javascript 承诺有些困惑
- android - 当用户单击任何应用程序的卸载按钮时如何显示窗口
- c# - 从集合中过滤数据
- reactjs - 如何在 React Native 中加密数据(使用 Expo)
- math - 为什么我没有将十进制精度提高到 1 位?
- java - Java SHA-256 程序提供了错误的哈希
- c++ - C++ 中 Vector 的 std::upper_bound 和 std::lower_bound 的复杂性是多少?
- javascript - 我的 d3 折线图中的画笔功能未按预期工作
- node.js - 如果 www 不在反应 js Web 应用程序中的 URL 中,则将 www 添加到安全 URL