○第77回目 グラフにコメントをつける(その3:おまけ)
作成できる図形の対象として、垂直線、水平線を追加します。
それをグラフ上に表示して、グラフに区切りをつけるというように利用します。
あわせて矢印図形もつけて、これまでは実績で、ここからは推計とコメントします。
左向き矢印、"これまでは実績"、垂直線、"ここからは推計"、右向き矢印 とグラフに表示するものです。
さらに、コメントとして使用するので、図形の外枠を消しておきたい場合がありますので、外枠のオン・オフを指定します。あわせて、内部の文字のフォントサイズも変更します。欲張るときりがありませんが、もう一つ、線の太さと矢印のオン・オフについても紹介します。
(これらはすべて図形作成システムにも同じように利用できます)
【機能】
1.垂直直線、水平線を描く
2.図形の外枠をつけたり消したりする
3.コメントのフォントの種類とサイズを変更する
4.線の太さを変更する
5.矢印をつけたり消したりする
1.垂直直線、水平線を描く
垂直直線の場合
ActiveSheet.Shapes.AddLine(82.5, 875.25, 82.5, 972#).Select
水平線の場合
ActiveSheet.Shapes.AddLine(1296.75, 218.25, 1505.25, 218.25).Select
2.図形の外枠をつけたり消したりする
外枠をつける場合
ActiveSheet.Shapes(i).Select
Selection.ShapeRange.Line.Visible = msoTrue
外枠を消す場合
ActiveSheet.Shapes(i).Select
Selection.ShapeRange.Line.Visible = msoFalse
3.コメントのフォントの種類とサイズを変更する
フォントの種類を変更する場合
・フォントの種類を入力します。
fo_syurui = InputBox("フォントの種類を入れてください。" & vbCrLf & _
"0=⇒そのまま" & vbCrLf & _
"1=⇒MS Pゴシック" & vbCrLf & _
"2=⇒ " & vbCrLf & _
"3=⇒MS 明朝" & vbCrLf & _
"4=⇒HGP創英角ポップ体" & vbCrLf & _
"5=⇒ " & vbCrLf & _
" " & vbCrLf _
, xpos:=2000, ypos:=3000, Default:=0)
・フォント種類の変換(フォントの名前を調べる必要があります。一例)
Select Case fo_syurui
'MS Pゴシック
Case "1"
fo_na = "MS Pゴシック"
fo_sty = "太字"
・フォント種類の変更
ActiveSheet.Shapes(i).Select
With Selection.Font
.Name = fo_na
.FontStyle = fo_sty
End With
フォントのサイズを変更する場合
・フォントのサイズの入力。
fo_siz = InputBox("フォントのサイズを入れてください。" & vbCrLf & _
"6/8/9/10/11/12/14/16/18/20/22/24/26/28/36/48/72のいずれか" & vbCrLf _
, xpos:=2000, ypos:=3000, Default:=12)
・フォントのサイズの変更
ActiveSheet.Shapes(i).Select
With Selection.Font
.Size = Val(fo_siz)
End With
4.線の太さを変更する(※ラインとコネクタの場合のみです。他の図形は試していません。エラーになるかも知れません)
太さを入力して、0.25刻みに調整する
hutosa = InputBox("太さを入力してください。0.25単位で近いところにします ", , 2)
hutosa = Int((hutosa * 4 + 0.5)) / 4
太さを変更する
ActiveSheet.Shapes(i).Select
Selection.ShapeRange.Line.Weight = hutosa
5.矢印をつけたり消したりする(※ラインとコネクタの場合のみです。他の図形は試していません。エラーになるかも知れません)
両方の矢印なしの場合
Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadNone
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadNone
――→の場合
Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadNone
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
←――の場合
Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadTriangle
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
←―→の場合
Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadTriangle
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
※4.と5.で、『ラインとコネクタの場合のみです。他の図形は試していません。エラーになるかも知れません』と記載しましたが、これは一般的にいえることで、他の図形にはあるがライン等にはないもの(テキスト、外枠)があります(逆もあります。太さ、矢印など)。図形の種類ごとにエラーが起きないように、矛盾しない処理にしてください。
現時点でトラブルが多いのが、ライン(特にラインからテキストを取得しようとした場合。結果がコネクタともちょっと違う)の場合です。
ということで、この対応としては、次のようにしています。
※コネクタとラインの場合は処理を除外する例
ActiveSheet.Shapes(i).Select
mm2(i) = Selection.Name '図形の名前を取得
return_V1 = Selection.ShapeRange.Connector 'ラインにはこのようなコマンドが見つからない。
If return_V1 <> -1 Then 'コネクタの場合は-1となるので対象外となる
If InStr(mm2(i), "Line") = 0 Then '図形の名前からで判断。エクセル2003でのもの。ラインは対象外となる。
mm1(i) = Selection.Characters.Text
End If
End If
※ライン関係のエラー対応については、かなり苦労しました。

0 件のコメント:
コメントを投稿