【问题标题】:Hide and Unhide Specific Blank Rows With the Same Button使用相同的按钮隐藏和取消隐藏特定的空白行
【发布时间】:2013-11-19 22:06:19
【问题描述】:

有没有办法修改此代码,使其仅隐藏/取消隐藏特定范围内的行,例如第 21:89 行?

Sub HideLLRows() '此子取消/隐藏 EIRP LL 中的空白行

Application.ScreenUpdating = False
Dim i As Long
Dim EIRPLL As Worksheet
Dim NewState As VbTriState
Dim dat As Variant
Dim rws As Range

Dim LastRow As Long
Set EIRPLL = Sheets("EIRP LL")

With EIRPLL.UsedRange
    LastRow = .Rows.Count - .Row + 1 ' in case used range doesn't start at row 1
    dat = .Columns(2).Resize(LastRow, 1)
End With

NewState = vbUseDefault
With EIRPLL
    For i = 6 To LastRow
        If dat(i, 1) = "" Then
            If NewState = vbUseDefault Then
                NewState = Not .Rows(i).Hidden
            End If
            If rws Is Nothing Then
                Set rws = Cells(i, 1)
            Else
                Set rws = Union(rws, Cells(i, 1))
            End If
        End If
    Next
End With
rws.EntireRow.Hidden = NewState

Application.ScreenUpdating = True

结束子

【问题讨论】:

  • 如果UsedRange 直到1048576 行怎么办?因此,如果您想找到最后一行,请使用THIS 方法。现在回到你的问题。 ...specific range such as Row 21:89 这里已经有了开始行和结束行,为什么不在 for 循环中使用呢?

标签: excel vba


【解决方案1】:

你可以这样使用:

hStatus = Rows("21:89").Hidden
If hStatus = False Then hStatus = True Else hStatus = False
Rows("21:89").Hidden = hStatus

您需要检查隐藏属性是什么,将其设置为一个变量,然后将变量切换到相反的位置并使用它来设置您的隐藏属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多