目前,我正致力于使用数组制作更小的工作代码。我将尽快解释一下代码;
如果要求某个零件在数据表中(此工作表称为"高压磨削辊"),则用户可以通过输入值来定义此值" a"在Sheets上(" Invulformulier")。如果单元格值是" a"现在有几个部分可以在数据表上。如果我们有" partA"," partB"和" partC",单元格的RangeName将是Sheets上的部件名称(" Invulformulier")。 Sheets(" High Pressure Grinding Rolls")范围的RangeName将是部件的名称+" 1"。例如" partA1"。必须隐藏此范围,具体取决于用户是否放入" a" for" partA"。
这是我使用和使用的代码,但特定于单元名称:
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
这段代码非常具体,我想制作一个数组。这就是我到目前为止所做的:
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
寻找价值" a"对于每个部分都有效,但如果价值不足,我就无法将其隐藏在数据表中。" a"是或未插入。我如何引用变量RangeName?
答案 0 :(得分:1)
如果我正确理解了您的问题,您可以试试这个:
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
答案 1 :(得分:0)
这可以按照您的要求进行吗?它将隐藏“高压研磨辊”上的所有命名范围。工作表,然后显示包含相应复选框值的行。
我在以下页面找到了有用的信息:Loop through all named ranges in a Excel Sheet
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