我试图在一个范围内隐藏行,其中范围的界限是可变的。我知道如何隐藏行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