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技巧!


分享到:


相關文章: