2016-10-11 6 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

素晴らしい!あなたのコードがうまく動いてうれしいよ:) –

関連する問題