下拉列表可将一张纸中的行隐藏到其他纸中

问题描述 投票:0回答:1

我想要一个下拉列表,其名称例如计算、其他,通过选择一个,我可以将某些行隐藏在另一张纸上。 有没有简单的方法可以做到这一点?

我尝试了一些代码,但我不明白语法,因为我从另一张纸中提取单元格值并更改为另外三张纸

Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Project&Site_Details").Rows("4:8").EntireRow.Hidden = IIf(Me.Range("c4").Value2 = "Server Migration", True, False)
End Sub

这个人一直问我宏名称。

因此,基本思想是单元格 C4 上的工作表 Project&Site_Details 上的下拉菜单,其中包含三个名称“服务器迁移”、“数据类型”、“其他”。并让他们根据工作表隐藏或显示三个不同工作表上的行。如预检查表、后检查表

我使用此代码让它工作

Private Sub worksheet_change(ByVal target As Range)
Dim KeyCells As Range
Set KeyCells = Range("C4")

If Not Application.Intersect(KeyCells, Range(target.Address)) Is Nothing Then
If KeyCells = "Server Migration" Then
 Sheets(3).Rows("4:4").Hidden = True
  Sheets(3).Rows("5:5").Hidden = True
Else
Sheets(3).Rows("4:4").Hidden = False
Sheets(3).Rows("5:5").Hidden = False
End If
If KeyCells = "Add-On" Then
 Sheets(3).Rows("10:11").Hidden = True
Else
Sheets(3).Rows("10:11").Hidden = False
End If

End If

End Sub

有没有更简单的方法?

excel vba macros row hide
1个回答
0
投票

评估单个值时请考虑使用

Select Case
。观看:Excel VBA 简介第 14 部分 - 选择案例语句

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(False, False) = "C4" Then
        Select Case Target.Value
            Case "Server Migration"
                Sheets(3).Rows("4:4").Hidden = True
                Sheets(3).Rows("5:5").Hidden = True
            Case "Add-On"
                Sheets(3).Rows("10:11").Hidden = True
            Case Else
                Sheets(3).Rows("4:4").Hidden = False
                Sheets(3).Rows("5:5").Hidden = False
                Sheets(3).Rows("10:11").Hidden = False
        End Select
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.