我有一些代码,根据单元格的值,它会显示正确的健康危害象形图。
如果D48中的结果是'AMBER-01'或'GREEN',那么它是否有效但是对其他人不起作用?
我保持尽可能简单,但我无法理解为什么它不起作用?
Sub COSHH()
'If statements for visibility of Pictograms
If Sheets("COSHH").Range("D48").Value = "RED-01" Then
Sheets("Formulation").Shapes.Range(Array("GreenCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("AmberCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("RedCOSHH")).Visible = msoTrue
Sheets("Formulation").Shapes.Range(Array("RedCOSHH2")).Visible = msoFalse
ElseIf Sheets("COSHH").Range("D48").Value = "AMBER-01" Then
Sheets("Formulation").Shapes.Range(Array("GreenCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("AmberCOSHH")).Visible = msoTrue
Sheets("Formulation").Shapes.Range(Array("RedCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("RedCOSHH2")).Visible = msoFalse
ElseIf Sheets("COSHH").Range("D48").Value = "AMBER-02" Then
Sheets("Formulation").Shapes.Range(Array("GreenCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("AmberCOSHH")).Visible = msoTrue
Sheets("Formulation").Shapes.Range(Array("RedCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("RedCOSHH2")).Visible = msoFalse
ElseIf Sheets("COSHH").Range("D48").Value = "GREEN" Then
Sheets("Formulation").Shapes.Range(Array("GreenCOSHH")).Visible = msoTrue
Sheets("Formulation").Shapes.Range(Array("AmberCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("RedCOSHH")).Visible = msoFalse
Sheets("Formulation").Shapes.Range(Array("RedCOSHH2")).Visible = msoFalse
End If
End Sub
有没有人有任何想法?我已经尝试将最后一个更改为其他。我尝试将每个部分分解为它自己的IF语句。
没有欢乐!!
提前致谢
答案 0 :(得分:1)
if语句集似乎没有问题。使用您提供的代码,我无法确定正在提取的确切信息以及数组中发生的情况。但是,if语句中的一行必须给您一个问题。请务必使用消息框并使用F8逐步执行代码以更好地了解正在发生的事情。请参阅下面的测试代码,因为它运行正常。
Sub test()
If Sheets("Sheet2").Range("A1").Value = "RED-01" Then
Cells(2, "A") = "hi"
ElseIf Sheets("Sheet2").Range("A1").Value = "AMBER-01" Then
Cells(2, "A") = "hi2"
ElseIf Sheets("Sheet2").Range("A1").Value = "AMBER-02" Then
Cells(2, "A") = "hi3"
ElseIf Sheets("Sheet2").Range("A1").Value = "GREEN" Then
Cells(2, "A") = "hi4"
End If
End Sub