2017-11-27 26 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 

안녕하세요,이 코드를 여러 모양으로 확장하려면 어떻게해야합니까? Set Cell에서 End까지 모든 것을 복사하고 Set 셀 값과 모양을 변경했지만 작동하지 않았습니다.VBA 코드를 여러 모양으로 확장

+0

설명하신 내용이 제대로 작동해야합니다. 'cell'이 이미 셀 타입이고 엑셀 라이브러리의 객체 타입이기 때문에 끔찍한 변수 이름 인'cell'을 변경하고'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 

더 똑똑한 방법으로 작동합니까?