如何修改Excel VBA宏实现多行的隐藏与取消隐藏功能?
修改VBA宏以批量隐藏/取消隐藏多行
你可以通过定义包含所有目标行的Range对象来实现批量操作,具体修改如下:
修改后的完整代码
Sub Cloud_Click() Dim ws As Worksheet Dim targetRows As Range Set ws = ThisWorkbook.Worksheets("Sheet1") ' 定义需要操作的多行,可根据需求添加或移除行号 Set targetRows = Union(ws.Rows(5), ws.Rows(10), ws.Rows(15), ws.Rows(20), ws.Rows(22), ws.Rows(26)) If ws.Shapes("Cloud 2").TextFrame2.TextRange.Text = "openen" Then ws.Shapes("Cloud 2").TextFrame2.TextRange.Text = "verbergen" targetRows.Hidden = False Else ws.Shapes("Cloud 2").TextFrame2.TextRange.Text = "openen" targetRows.Hidden = True End If End Sub
关键说明
- 使用
Union函数可将多个不连续行合并为一个Range对象,实现一次性对所有目标行执行隐藏/取消隐藏操作 - 若后续需调整目标行,只需在
Union中继续添加ws.Rows(行号)即可,比如要加入第30行,修改为Set targetRows = Union(ws.Rows(5), ws.Rows(10), ..., ws.Rows(30)) - 也可直接用逗号分隔的行号字符串写法:
Set targetRows = ws.Rows("5,10,15,20,22,26"),效果与Union一致,两种写法任选其一即可
内容的提问来源于stack exchange,提问作者Jeffrey van Malssen
相关产品推荐
相关产品推荐

