2017-12-20 14 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

ああ、これは私が言及しなかった何かを除いて完全に動作します。テーブル内のセルは条件付き書式に従って色付けされます。書式設定の色を転送する方法はありますか(それは技術的にはセルの色としてカウントされません)。 – 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の色を期待しています。 shp.Fill.ForeColor.RGB = colorFancy.Interior.Color

@sktneerからの回答で提案されているよう:RGB()は、このようにあなたは、単に使用することができ、Range.Interior.Colorで使用されているのと同じLongを返します。

関連する問題