![d0fd25985f126c43e2b662224b59eeaf.png](https://img-blog.csdnimg.cn/img_convert/d0fd25985f126c43e2b662224b59eeaf.png)
前几天收到一个需求,需要将工作表内的所有合并的单元格所在的行全部隐藏。第一次做这种需求,我的思路是这样的:
之前在《VBA常用技巧》里看到过,批量删除空白单元格,关键代码是这样的
Columns(1).SpecialCells(4).EntireRow.Delete
想要获取《VBA常用技巧》,请看这篇文章:848个Excel VBA 实用技巧,实例+详细解析,入门必看,建议收藏
获取第一列所有空白单元格,删除它们所在行
那么,我就想到了,先取一下所有合并单元格的行号,可以将这些行的第一列单元格加入Range,然后用Range.EntireRow.Hidden = True来解决
因为考虑到获取的行号可能会有重复,所以就用字典来实现去重,
代码如下:
Set dic = CreateObject("Scripting.Dictionary")For Each c In ActiveSheet.UsedRange If c.MergeCells = True Then dic(c.Row) = "" End IfNext