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

时间:2016-10-11 12:44:37

标签: excel vba show shape

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

如果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语句。

没有欢乐!!

提前致谢

1 个答案:

答案 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