[Excel VBA] 工程表の作成 -VBAによるShapeの描画- (3)

|

 工程表では、客先協議や関係機関協議などの「協議」を記すことも重要です。「協議」はピンポイントで行われるものなので、ラインではなく別の表示をしてやります。

ここでは▲としました。これは文字列の「▲」ではなく、Shapeオブジェクトの三角形です。

三角形を描画するメソッド、というか図形を描画するメソッドは、

expression.AddShape(Type, Left, Top, Width, Height)

Type : 描画する図形のタイプ (MsoAutoShapeType クラスの定数)
Left, Top : 描画する図形の左上の座標値 As Single
Width, Height : 描画する図形の幅と高さ As Single

です。

ここでは上向きの三角形なので、msoShapeIsoscelesTriangleとなります。既に述べたように、選択範囲の左上の座標値や幅、高さは取得できるので簡単です。

今回ちょっと工夫をしたところは、上図の青▲がライン上に、赤▲がセル上に描画されていますね。この両方のパターンを一つのボタン(プロシージャ)で出来るようにしたことです。

    ' 協議マークの開始座標、幅、高さを設定
    If Selection.Columns.Count = 1 Then
        X0 = SentakuLeft
        Y0 = SentakuTop
        W1 = SentakuWidth
        H1 = SentakuHeight
    Else
        X0 = SentakuLeft + (SentakuWidth / 4)
        Y0 = SentakuTop
        W1 = SentakuWidth / 2
        H1 = SentakuHeight
    End If

セルを1列選択したときと2列選択したときで図形左上の座標値、幅と高さの計算式を変えているだけです。単純です。

図形の描画についても、描画範囲外の場合や2行以上選択した場合、また上のコードに当てはまらない場合つまり3列以上選択した場合にはメッセージを出して処理を抜けます。

    ' 協議マークをプロットする
    Set shp = ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, X0, Y0, W1, H1)
    
    ' 協議マークの塗りつぶしを設定
    shp.Line.Weight = 0.1
    shp.Line.ForeColor.RGB = RGB(ColorR, ColorG, ColorB)
    shp.Fill.Visible = True
    shp.Fill.ForeColor.RGB = RGB(ColorR, ColorG, ColorB)

最後に描画した三角形の色と塗りつぶし色を設定して終了です。 

 

完成したファイルを置いておきます。特にパスワードはかけていないので拙いコーディングですが、見てやって下さい。

カスタム検索
Access Counter
Powered by Movable Type 4.22-ja

2016年9月

Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

最近のブログ記事