在循环中遇到麻烦。我不知道怎么做循环。
我需要创建一个循环如果我选择"High"或" low ",则表示高或低的状态将被显示。
所以,如果我选择"High",只有指示High的状态才会被打开。指示"低"的状态;将被隐藏。反之亦然
我已经为所涉及的范围给出了名称,每个州将有一个名称。
每个状态的High和Low指示器位于不同的位置,如下面的代码。
我只使用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][![示例State1] [2]] [2][![示例State2] [3]] [3]
这里是我选择指示器的地方:[1]: https://i.stack.imgur.com/Xy3oB.png
这里是需要隐藏或不隐藏的样本状态,实际上有4个指标,高,中等,低和无。[2]: https://i.stack.imgur.com/Uhur0.png[3]: https://i.stack.imgur.com/qwUpf.png
而且每个状态都是独立的,指标也会根据给定的数据而变化。
我将使用一个配置数组并遍历它。如果你在工作表上有一个包含所有国家/地区的列表,那么你可以使用它来填充arrConfig.
只要Range("H9")发生变化,就调用子函数,并提供新值作为参数。
编辑:期望每个风险单元的名称具有命名约定risk_[国家代码],例如risk_AL, risk_AK等。
Sub hideShowCountries(checkValue As String)
Dim ws As Worksheet: Set ws = ActiveSheet 'adjust to your needs
Dim arrConfig(2) As String
arrConfig(0) = "AL"
arrConfig(1) = "AK"
arrConfig(2) = "AZ"
'extend this list to your needs
Dim rgCountry As Range, strRisk As String
Dim i As Long
For i = 0 To UBound(arrConfig)
With ws
Set rgCountry = .Range(arrConfig(i))
'strRisk = getRiskForCountry(rgCountry)
strRisk = .range("risk_" & arrConfig(i))
End With
rgCountry.EntireRow.Hidden = CBool(strRisk <> checkValue)
Next
End Sub
Private Function getRiskForCountry(rgCountry As Range) As String
getRiskForCountry = rgCountry.Cells(1, 1).value 'adjust this to your needs
End Function