根据其他工作表中的值隐藏variablesRangeName

目前我正在使用一个数组来缩小工作代码。 我会很快解释代码;

如果某个零件需要在数据表中(该工作表被称为“高压研磨辊”),则用户可以通过在表格(“Invulformulier”)上input值“a”来定义该零件。 如果单元格值为“a”,现在有几个部分可以在数据表上。 如果我们有“partA”,“partB”和“partC”,单元格的RangeName将是表单上的零件名称(“Invulformulier”)。 板料上的范围的范围名称(“高压研磨辊”)将是部件的名称+“1”。 例如“partA1”。 这个范围必须隐藏,这取决于用户是否为“partA”放入“a”。

这是我使用和工作的代码,但特定于单元名称:

Sub Hidecellv1 () If Range("partA").Value = "a" Then Sheets("High Pressure Grinding Rolls").Range("partA1").EntireRow.Hidden = False ElseIf Range("partA").Value = "" Then Sheets("High Pressure Grinding Rolls").Range("partA1").EntireRow.Hidden = True End If End Sub 

这段代码非常具体,我想创build一个数组。 这是我迄今为止:

 Sub Hidecellwitharray () Dim rngName As Range Dim cell As Range Application.ScreenUpdating = False For Each cell In Range("Checkbox") 'Where user puts in value "a" or not If cell.Value = "a" Then Sheets("High Pressure Grinding Rolls").Range(RangeName & "1").EntireRow.Hidden = False Else Sheets("High Pressure Grinding Rolls").Range(RangeName & "1").EntireRow.Hidden = True End If Next cell Application.ScreenUpdating = True End Sub 

为每个部分search值“a”是可行的,但是如果值“a”被插入或者没有被插入,我就无法将其隐藏在数据表中的部分。 我如何引用一个variablesRangeName?

如果我正确理解你的问题,你可以试试这个:

 Option Explicit Sub Hidecellwitharray() Dim cell As Range Application.ScreenUpdating = False For Each cell In Range("Checkbox") 'Where user puts in value "a" or not Sheets("High Pressure Grinding Rolls").Range(Split(cell.Name.Name, "!")(1) & "1").EntireRow.Hidden = Not cell.Value = "a" Next cell Application.ScreenUpdating = True End Sub 

这是否按照你的要求? 它将隐藏“高压研磨辊”表中的所有命名区域,然后显示包含相应checkbox值的行。

我在下面的页面find了有用的信息: 循环遍历Excel工作表中的所有命名区域

  Sub Hidecellv1() Dim nm Dim rngName For Each nm In ThisWorkbook.Names If Left(nm.Name, 4) = "Part" Then Sheets("High Pressure Grinding Rolls").Range(nm).EntireRow.Hidden = True End If Next nm rngName = Range("checkbox").Value Sheets("High Pressure Grinding Rolls").Range("Part" & rngName & "1").EntireRow.Hidden = False End Sub