2017-12-20 2 views
1

워크 시트의 각 모양의 색상을 테이블의 해당 셀과 일치하도록 설정하는 기본 루프를 설정하고자합니다 (조건부 서식 지정).모양 색상을 셀 색상과 일치시킵니다.

내가 그러나 다음

dim countryShape as shape 

For Each countryShape In ActiveSheet.Shapes 

countryShape.Range.Interior.Color = Application.VLookup(countryShape.Name, ActiveSheet.Range("D3:H19"), 2, 0).Interior.Color 

Next countryShape 

을 가지고, 내가 얻을, 나는 그것이 함께 할 것입니다 추측하고

'개체에 필요한'는

런타임 오류 (424) 색상 응용 프로그램의 형식 (예 : 셀의 경우 .interior.color, 모양의 경우 .fill.forecolor) 그러나 지금까지 시도한 모든 조합은 아직 작동하지 않습니다.

답변

4

도형의 색을 변경하려면 Fill.ForeColor 속성을 변경해야합니다. 또한 셀 색상이 아닌 셀 값을 반환하므로 Vlookup을 사용할 수 없습니다. 여기

Dim countryShape As Shape 
Dim ColorCell As Range 
For Each countryShape In ActiveSheet.Shapes 
    Set ColorCell = Range("D3:D19").Find(what:=countryShape.Name, lookat:=xlWhole) 
    If Not ColorCell Is Nothing Then 
     'get the shape color from corresponding cell in column E 
     countryShape.Fill.ForeColor.RGB = ColorCell.Offset(0, 1).Interior.Color 
    End If 
Next countryShape 
+0

아, 이것은 언급하지 못한 것을 제외하고는 완벽하게 작동합니다. 표의 셀은 조건부 서식에 따라 색이 지정됩니다. 포맷팅 색상을 전송할 방법이 있습니까? (기술적으로 셀 색상으로 계산되지 않습니다.) (방대한 도움을 위해 upvoted) – IIJHFII

+0

아 해결책을 찾았습니다. colorcell.DISPLAYFORMAT.interior.color를 사용합니다. 도움 주셔서 대단히 감사합니다! – IIJHFII

+0

@IIJHFII 환영합니다! 다행스럽게 바꿔 줘서 고마워. – sktneer

0

가이 같은 시도하십시오 ... 당신이 이동 :

Public Sub TestMe() 

    Dim shp   As Shape 
    Dim fancyCell As Range 

    Dim colorR  As Long 
    Dim colorG  As Long 
    Dim colorB  As Long 
    Dim colorFancy As Long 

    Set fancyCell = Range("A1") 
    colorFancy = fancyCell.Interior.Color 

    colorR = colorFancy And 255 
    colorG = colorFancy \ 256 And 255 
    colorB = colorFancy \ 256^2 And 255 

    For Each shp In ActiveSheet.Shapes 
     shp.Fill.ForeColor.RGB = RGB(colorR, colorG, colorB) 
    Next shp 

End Sub 

모양은 그래서 당신이 셀에서 색상을 가지고, 그것을 제공 할 수 있습니다, RGB 색상을 기대하고있다. RGB() 따라서 당신은 또한 간단하게 사용할 수는 Range.Interior.Color에 사용되는 것과 동일한 Long을 반환 shp.Fill.ForeColor.RGB = colorFancy.Interior.Color

@sktneer의 대답에 의해 제안 된 것처럼.

관련 문제