VBA代码来显示/隐藏象形图

我有一些代码,取决于一个单元格的值,它会显示正确的健康危害象形图。

如果D48中的结果是“AMBER-01”或“绿色”,但对其他结果不起作用,它是否有效?

我尽可能保持简单,但是我不知道为什么它不起作用。

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语句中。

没有喜悦!

提前致谢

你的if语句似乎没有问题。 随着你提供的代码,我不能告诉什么确切的信息被拉,或arrays内发生了什么。 然而,你的if语句中的一行必须给你一个问题。 一定要使用消息框,并使用F8来逐步通过您的代码,以更好地了解正在发生的事情。 看到我的testing代码下面,因为它运行良好。

 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