我已经尝试了一段时间来编写代码,如果该行的初始单元格值为空,则会隐藏多个范围内的行。在某些情况下,此电子表格是客户的报价,其中包含我们提供的所有产品作为订单项。显然,如果客户没有订购产品,我们不希望在他们的报价中显示该行。这是我尝试过的代码,但不断发现"下标超出范围"错误,甚至" _global"错误。任何输入都会受到赞赏,因为我的编码技巧充其量只是最基本的。谢谢!
Sub quickhide()
Dim r1 As Range, r2 As Range, r3 As Range, r4 As Range, r5 As Range,
MultiRange As Range
Set r1 = Sheets("Sheet1").Range("A13:A28")
Set r2 = Sheets("Sheet1").Range("A31:A35")
Set r3 = Sheets("Sheet1").Range("A41:A48")
Set r4 = Sheets("Sheet1").Range("A51:A54")
Set r5 = Sheets("Sheet1").Range("A57:A58")
Set MultiRange = Union(r1, r2, r3, r4, r5)
If MultiRange.Value = "" Then
MultiRange.EntireRow.Hidden = True
Else
MultiRange.EntireRow.Hidden = False
End If
End Sub
答案 0 :(得分:1)
试试这个
Sub quickhide()
Dim r1 As Range, r2 As Range, r3 As Range, r4 As Range, r5 As Range, MultiRange As Range, r As Range
Set r1 = Sheets("Sheet1").Range("A13:A28")
Set r2 = Sheets("Sheet1").Range("A31:A35")
Set r3 = Sheets("Sheet1").Range("A41:A48")
Set r4 = Sheets("Sheet1").Range("A51:A54")
Set r5 = Sheets("Sheet1").Range("A57:A58")
Set MultiRange = Union(r1, r2, r3, r4, r5)
For Each r In MultiRange
r.EntireRow.Hidden = (r.Value = vbNullString)
Next r
End Sub
答案 1 :(得分:0)
替代方案可能对您更友好:
将您正在使用的数据放入表格中。转到绿色功能区中的“数据”选项卡(在Excel 2016中)。将表导入Power Query。过滤您的第一行以删除空白(或" null")值。进行您喜欢的任何其他转换和"关闭并加载"到一个新的工作表。格式化该表并将其发送给您的客户。
您只需刷新表格即可考虑数据表中的任何更改。
杰克