如何隐藏行在一个范围的界限是可变的范围?



我试图在一个范围内隐藏行,其中范围的界限是可变的。我知道如何隐藏行5到8例如…

行("5:8" .EntireRow。Hidden = True

但是我如何做到这一点,其中StartHide和EndHide是整数?…

行.EntireRow (StartHide: EndHide)。Hidden = True

谢谢!

构造隐藏变量的范围

Rows(StartHide & ":" & EndHide).EntireRow.Hidden = True

隐藏行

  • 只能隐藏整个行。
  • 当范围是工作表的所有单元格时,您不必使用EntireRow(第一个示例)。

The Small Study

Option Explicit
Sub hideRowsWorksheet()

Const sHide As Long = 5
Const eHide As Long = 8

With ActiveSheet
.Rows(sHide).Resize(eHide - sHide + 1).Hidden = True
End With
End Sub
' When first row is equal to 1.
Sub hideRowsRange()

Const sHide As Long = 5
Const eHide As Long = 8

With ActiveSheet
Dim rg As Range: Set rg = .Range("A1:J10")
With rg
' This will hide 'Rows("5:8")': (1,2,3,4,5). Note 'EntireRow'.
.Rows(sHide).Resize(eHide - sHide + 1).EntireRow.Hidden = True
End With
End With
End Sub
' When first row is greater than 1.
Sub hideRowsRange2()

Const sHide As Long = 5
Const eHide As Long = 8

With ActiveSheet

Dim rg As Range: Set rg = .Range("A7:J16")
With rg
' This will hide 'Rows("11:14")' (7,8,9,10,11). Note 'EntireRow'.
.Rows(sHide).Resize(eHide - sHide + 1).EntireRow.Hidden = True
End With
End With
End Sub
' When range and worksheet rows are intersecting.
Sub hideRowsRange3()

Const sHide As Long = 5
Const eHide As Long = 8

With ActiveSheet
Dim rg As Range: Set rg = .Range("A7:J16")
With rg
' This will hide 'Rows("7:9")' (7,8,9,10,11)(5,6,7,8,9).
' Note the importance of the last occurrence of 'EntireRow'.
Intersect(.Worksheet.Rows(sHide) _
.Resize(eHide - sHide + 1), .EntireRow).EntireRow = True
End With

End With
End Sub
' When range and worksheet rows are intersecting (possible mistakes).
Sub hideRowsRange4()

Const sHide As Long = 5
Const eHide As Long = 8

With ActiveSheet
Dim rg As Range: Set rg = .Range("A7:J16")
With rg
' Although...
Debug.Print .Worksheet.Rows(sHide).Resize(eHide - sHide + 1).Address
Debug.Print .Worksheet.Rows(sHide) _
.Resize(eHide - sHide + 1).EntireRow.Address
Debug.Print rg.EntireRow.Address
' ...these do not work.
On Error Resume Next
Intersect(.Worksheet.Rows(sHide) _
.Resize(eHide - sHide + 1), .EntireRow).Hidden = True
Debug.Print "Run-time error '" & Err.Number & "': " & Err.Description
Intersect(.Worksheet.Rows(sHide) _
.Resize(eHide - sHide + 1).EntireRow, .EntireRow).Hidden = True
Debug.Print "Run-time error '" & Err.Number & "': " & Err.Description
On Error GoTo 0
End With
End With
End Sub

最新更新