前几天收到一个需求,需要将工作表内的所有合并的单元格所在的行全部隐藏。第一次做这种需求,我的思路是这样的:
之前在《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技巧!
閱讀更多 VBA編程開發 的文章