2016-10-11 2 views
0

셀의 값에 따라 올바른 건강 위험 그림이 표시되는 코드가 있습니다.그림을 표시/숨기기위한 VBA 코드

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 문으로 분해하려고했습니다.

No Joy !!

미리 감사드립니다.

답변

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 
+0

D48의 값은 CONCATENATE 수식에서 파생되었습니다. RED01 앞에 공백이 있습니다. 나는 그에 맞게 조정했다! – vividillusion

+0

좋아요! 다행 당신의 코드 작업 :) –