【发布时间】:2021-10-22 07:36:28
【问题描述】:
很难将它变成一个循环。我不知道做循环。
我需要创建一个循环,如果我选择“高”或“低”,那么指示高或低的状态将被取消隐藏。
因此,如果我选择“高”,则只有指示“高”的状态才会被隐藏。指示“低”的状态将被隐藏。 反之亦然。
我已经为所涉及的范围提供了名称,每个州将有一个名称。
每个状态的高位和低位指示器位于不同的位置,例如下面的代码。
我只是使用了 If 语句,因为我真的不知道其他方式。
If Range("H9").Value = "High" Then 'where I select either High or Low'
If Range("Q74").Value = "High" Then 'location of indicator for AL state'
Range("AL").EntireRow.Hidden = False 'rows associated with the state'
Else
If Range("Q99").Value = "High" Then
Range("AK").EntireRow.Hidden = False
Else
If Range("Q124").Value = "High" Then
Range("AZ").EntireRow.Hidden = False
Else
If Range("Q149").Value = "High" Then
Range("AR").EntireRow.Hidden = False
Else
If Range("Q174").Value = "High" Then
Range("CA").EntireRow.Hidden = False
End If
End If
End If
End If
End If
Else
If Range("H9").Value = "Low" Then
If Range("Q74").Value = "Low" Then
Range("AL").EntireRow.Hidden = False
Else
If Range("Q99").Value = "Low" Then
Range("AK").EntireRow.Hidden = False
Else
If Range("Q124").Value = "Low" Then
Range("AZ").EntireRow.Hidden = False
Else
If Range("Q149").Value = "Low" Then
Range("AR").EntireRow.Hidden = False
Else
If Range("Q174").Value = "Low" Then
Range("CA").EntireRow.Hidden = False
End If
End If
End If
End If
End If
End If
End If
样本数据: [![选择指标][1]][1] [![样本状态1][2]][2] [![样本状态2][3]][3]
这里是我选择指标的地方: [1]:https://i.stack.imgur.com/Xy3oB.png
这里是需要隐藏或不隐藏的示例状态,实际上有 4 个指标,High、Moderate、Low 和 None。 [2]:https://i.stack.imgur.com/Uhur0.png [3]:https://i.stack.imgur.com/qwUpf.png
而且每个状态都是相互独立的,指标也会根据给定的数据而变化。
【问题讨论】:
-
我不确定您的
If ... else结构是否符合您对需求的描述。如果 H9 是“高”而 Q74 不是“高”,甚至不检查 Q99、Q124、Q149 等是否正确? -
你运行代码了吗?
Range("AL").EntireRow.Hidden = False应该抛出一个错误。Range("AL")引用列 --> 然后EntireRow列引用整个工作表...您会看到问题:如果隐藏所有整行,工作表将没有任何可见行。 -
此外,如果您向我们展示您的数据将会对我们有所帮助
-
Range("AL")是范围的名称。 -
你不需要 If/Endifs。您可以进行布尔比较。例如
Range("AL").EntireRow.Hidden = ((Range("H9").Value = Range("Q74").Value) = (Range("H9").Value = "High"))对其他人也是如此:) 所有这些代码都将减少到大约。 10 行。