VBA 代码转 show/hide 象形图
VBA code to show/hide pictograms
我有一些代码可以根据单元格的值显示正确的健康危害象形图。
如果 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 语句。
不开心!!
提前致谢
您的 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
我有一些代码可以根据单元格的值显示正确的健康危害象形图。
如果 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 语句。
不开心!!
提前致谢
您的 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