前幾天收到一個需求,需要將工作表內的所有合併的單元格所在的行全部隱藏。第一次做這種需求,我的思路是這樣的:
之前在《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編程開發 的文章