2017-11-27 10 views
0
Private Sub Worksheet_Calculate() 
Dim cell As Range 
Set cell = Range("E9") 
If IsNumeric(cell) Then 
    If cell.Value < 0 Then 
     ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = vbRed 
    Else 
     ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = vbGreen 
    End If 

End If 
End Sub 

こんにちは、このコードを複数の図形で動作させるにはどうすればよいですか?私はちょうどセットセルからエンドにすべてをコピーしようとし、設定セルの値と形状を変更しましたが、これは動作しませんでした。VBAコードを複数の図形に展開する

+0

あなたが説明した内容はうまくいくはずです。 'cell'(これは' cell'が既にあり、Excelタイプライブラリのオブジェクト型であるためひどい変数名です)を変更し、 'ActiveSheet.Shapes(" namehere ")の名前を変更するのが正しい方法です他のセル/シェイプの組み合わせをターゲットにするおそらく、あなたのセルの値は、それがそうだと思うときは数値ではないでしょうか?また、 'activesheet'は素晴らしい選択ではありません。 'Sheets(" yoursheetname ")。Shapes(" yourshapename ")'はより信頼できます。 – JNevill

答えて

0
Private Sub Worksheet_Calculate() 
Dim x As Range 
Set x = Range("E9") 
If IsNumeric(x) Then 
    If x.Value < 0 Then 
     Sheets("DIA").Shapes("Rectangle 2").Fill.ForeColor.RGB = vbRed 
    Else 
     Sheets("DIA").Shapes("Rectangle 2").Fill.ForeColor.RGB = vbGreen 
    End If 
End If 

Dim y As Range 
Set y = Range("T9") 
If IsNumeric(y) Then 
    If y.Value < 0 Then 
     Sheets("DIA").Shapes("Rectangle 19").Fill.ForeColor.RGB = vbGreen 
    Else 
     Sheets("DIA").Shapes("Rectangle 19").Fill.ForeColor.RGB = vbRed 
    End If 

End If 
End Sub 

これはどのスマートな方法でも機能しますか?

関連する問題