Excel VBA 之 隐藏合并单元格所在的行


Excel VBA 之 隐藏合并单元格所在的行

前几天收到一个需求,需要将工作表内的所有合并的单元格所在的行全部隐藏。第一次做这种需求,我的思路是这样的:

之前在《VBA常用技巧》里看到过,批量删除空白单元格,关键代码是这样的

<code>Columns(1).SpecialCells(4).EntireRow.Delete/<code>

想要获取《VBA常用技巧》,请看这篇文章:

获取第一列所有空白单元格,删除它们所在行

那么,我就想到了,先取一下所有合并单元格的行号,可以将这些行的第一列单元格加入Range,然后用Range.EntireRow.Hidden = True来解决

因为考虑到获取的行号可能会有重复,所以就用字典来实现去重,

代码如下:

<code>Set dic = CreateObject("Scripting.Dictionary")
For Each c In ActiveSheet.UsedRange
If c.MergeCells = True Then
dic(c.Row) = ""
End If
Next/<code>

就这样,就取到了所有合并单元格的行号。然后将这些行的A列单元格加入range,代码如下:

<code>arr = dic.keys
Set rng = Cells(arr(0), 1)
For i = 1 To UBound(arr)
Set rng = Union(rng, Cells(arr(i), 1))
Next/<code>

最后,

<code>rng.EntireRow.Hidden = True/<code>

这样,代码就完成了!


看一下效果:


Excel VBA 之 隐藏合并单元格所在的行

最终效果

全部代码如下:


Excel VBA 之 隐藏合并单元格所在的行

代码全貌

点击下面链接可以查看我的其他文章哦!


喜欢的朋友记得点赞关注哦,网友们如果在Excel中遇到问题都可以找我交流,也可以在评论区或私信告诉我你想看到的VBA办公教程,我将在下期分享给大家,以后不定期更新Excel VBA技巧!


分享到:


相關文章: