1

そのため、グローバル マッピング スキームを含む Excel ワークブックがあります。だから私はエクセルで各国の形を持っています。データ/クエリに関連する地域の選択に応じて、さまざまな方法で地域/国を陰影付けします。

だから私は色、グラデーション シェーディングなどの観点から各形状を操作する方法を知っています....

どうすればよいかわからないのは、サブルーチンの最後で形状を「選択解除」することです。私のコードは次のようになります(本当に簡単です):

sheet1.shapes("CountryName").select
selection.shaperange.fill.solid
selection.shaperange.fill.visible = true
selection.shaperange.fill.forecolor.rgb=rgb(110,110,110)
selection.shaperange.fill.onecolorgradiend msogradienthorizontal, 2, 0.45

わかりましたので、ある形/国/地域から別の形/国/地域への「選択解除」は、フォーカスがジャンプするため、それほど大きな問題ではありませんが、最後に????

私はたくさんのものを推測/試しましたが、残念ながら運がありません

ありがとう!

4

3 に答える 3

3

ソースの最後の行にタイプミスがあります ...gradiend --> ...gradient

selection.shaperange.fill.onecolorgradienT msogradienthorizontal, 2, 0.45

形状オブジェクトを「選択解除」する非常に簡単な方法は、次のコード行を追加することです

sheet1.[A1].select

これにより、フォーカスがシートのセル A1 に移動し、オブジェクトから離れます。非常に失礼で、お勧めしません。また、カーソルがセルにあるのか、別の (範囲) オブジェクトにあるのかがわからないため、上記で提案されている「現在の選択を保存する」こともお勧めしません。

より良い方法は、スクリプト全体で「選択」を完全に回避することです。シェイプをオブジェクトに割り当て、そのオブジェクトを操作します (注: テストで最初に使用可能なオブジェクトを使用して sheet3 でシミュレートしました)。

Sub test()
Dim MyShape As Shape
    Set MyShape = Sheet3.Shapes(1) ' or whatever shape according to the user input
    With MyShape.Fill
        .Solid
        .Visible = True
        .ForeColor.RGB = RGB(110, 110, 110)
        .OneColorGradient msoGradientHorizontal, 2, 0.45
    End With
End Sub

さらに良いことに、形状の名前を示すリストを処理している場合は、次のようにします。

Sub Test()
    '
    ' get the shape's name into ShapeName
    ' ...

    ColorShape Sheet3.Shapes(ShapeName)

    ' ...

End Sub

Sub ColorShape(MyShape As Shape)
    With MyShape.Fill
        .Solid
        .Visible = True
        .ForeColor.RGB = RGB(110, 110, 110)
        .OneColorGradient msoGradientHorizontal, 2, 0.45
    End With
End Sub

これが役に立てば幸いです

于 2009-11-04T13:49:15.943 に答える