隐藏名称范围中的5行中的3行?

时间:2017-09-26 14:01:40

标签: vba excel-vba excel

我的名称范围有5行6列。我想隐藏5行中的3行。我只能得到其中一行。我如何指定我需要隐藏的其他行?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rowCounter As Long
Dim theTargetRow, initialStartRow As String
initialStartRow = "113"
theTargetRow = initialStartRow + Target.Value
If Target.Value = "---" Then
    Range("myNameRange").Rows.Hidden = True
Else
    'Range("myNameRange").Rows.Hidden = True
    For rowCounter = theTargetRow To initialStartRow + 1 Step -1
        Rows(rowCounter).EntireRow.Hidden = False
    Next           
End If
End Sub
编辑:我通过从需要隐藏的行中删除我的名字范围来实现它。

3 个答案:

答案 0 :(得分:0)

由于您提供的信息有限,我只能向您提供有限的信息(更具体地说,下面的代码正在搜索您范围内的每个单元格,因为我不确定列N/A位于哪个位置)。

Option Explicit

Sub Test()

    Dim Target As Range, Cell As Range
    Set Target = Range("myNameRange")

    For Each Cell In Target
        If Cell.Value = "N/A" Then
            Cell.EntireRow.Hidden = True
        Else
            Cell.EntireRow.Hidden = False
        End If
    Next Cell

End Sub

答案 1 :(得分:0)

隐藏指定范围的第i行...

  Sheets("Sheet1").Range("myNameRange").Rows(i).EntireRow.Hidden = True 

答案 2 :(得分:0)

这将隐藏命名范围中的前三行,但是通过您发现适合您的解决方案,您似乎只想隐藏行 - 不一定在命名范围内。

Public Sub Test()

    Dim rCell As Range
    Dim i As Long

    For Each rCell In Range("myNameRange").Rows
        If i < 3 Then
            rCell.EntireRow.Hidden = True
        Else
            Exit For
        End If
        i = i + 1
    Next rCell

End Sub