2008年1月17日木曜日

第75回目 グラフにコメントをつける

○第75回目 グラフにコメントをつける

 図形の説明を続けてきましたが、今回は、グラフとの結合です。といってもだいそれたものではなく、グラフ上にコメントをつけることです(コメントと象徴的にいっていますが、テキスト入り図形のことです)。
 ポイントは、グラフシートにはセルがないことです。
 グラフ上でのセルの指定はすべてエラーになりますので、その点を無視する(エラー回避する)ような、手を講じれば、図形システムからマクロを移植できます。
 次の問題は場所についてです。セルによる指定ではなく、水平値、垂直値によって指定します。水平値は60から580、垂直値は30から350の範囲で指定すればいいと思います(グラフシートごとに微調整が必要だと思います)。
 図形の左上の位置を水平軸、垂直軸を20分割してその単位で指定することにします。端数入りで入力すればもっと細かい単位で位置が指定できます。
 水平軸で表せば、"60+26*入力値"が位置となります。
  ActiveSheet.Shapes(z_no).Left = 60 + 26 * x_pos
  ActiveSheet.Shapes(z_no).Top = 30 + 16 * y_pos
 こんな感じですね。
 更に、ワークシートとグラフシートの間での移動が不可欠です。

【手順】
 0.コメント文をワークシートに書き込みその箇所(複数も可)を指定し、実行する。
 1.セル指定範囲を取得し、コメントも取得する。
 2.グラフシートへの移動。相対的位置(現在のシートから-1、0、+1とか)で指定する。
 3.グラフ上の図形の場所を指定する。
 4.グラフ上で図形を描き、あわせて指定した場所に移動する。

 1.定番なので省略
 2.グラフシートへの移動
  シートの移動は相対位置(現在のシートから-1、0、+1とか)で指定します。
  初期情報もとっておきましょう。
ii_max = ActiveWorkbook.Sheets.Count
ii0 = ActiveSheet.Index
sh_cnt = InputBox("グラフシートの場所を入れてください。… -1 , 0 , 1 …など", Default:=-1, xpos:=2000, ypos:=3000)
その後、グラフシートを選択します。
Sheets(ii0 + sh_cnt).Select
現在位置はii0ですので、相対位置の意味合いはわかりますね。

3.グラフ上の位置の指定
グラフ上を、上下20等分にわけ、その位置の指定をします。図形でちょうど真ん中というのは難しいでしょう。真ん中の目安は10となります。
グラフの状況で設定した数値がグラフ域と同じとは限りません。調整するか、どうかですが、マイナスの数値が入りますので、設定ワークシートよりちょっと左とか上だとかというのも指定できます。細かい移動はカーソルでおこないます。
横・縦の順で指定します。
x_pos = Val(InputBox("図形の横位置を入力してください。全体を20分割 0-20 ", , , 10))
y_pos = Val(InputBox("図形の縦位置を入力してください。全体を20分割 0-20 ", , , 10))

 4.グラフ上で図形を描き、あわせて指定した場所に移動する。
  図形の種類は面取り長方形としています。種類を増やす場合はここを拡充してください。"図形の複数一括作成"をサブルーチン化するといいと思います。問題点は確かめていませんので、各自で行なってください。エラー回避を忘れずに。
  複数の可能性がありますので、For文で囲ってください。
  ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 225.75, 822.75, 126#, 62.25).Select
 テキストの書き込みです。
Selection.Characters.Text = mm1(i)
 位置の指定は次のようにします。"ll"が付いたものは定数と見てください。
 const文での定義を忘れずに。
Selection.Left = ll060 + ll026 * x_pos + (i - 1) * ll026 / 2
Selection.Top = ll030 + ll016 * y_pos + (i - 1) * ll016 / 2

 最後に、プロットエリアを指定して終わります。これがなくても支障はありませんが、最後に移動した図形がアクティブになっています。後の処理にどちらが便利かです。
ActiveChart.PlotArea.Select

 このシステムの機能としてほかに必要なのは、
 ・テキストの取得・書き出し(ワークシートから及びへ)
 ・テキスト(コメント)の修正
 ・図形(ひとつ)の移動
 です。
 他の拡張機能は、図形システムから移植してみてくさい。
 色の選択、図形の削除などは、セル参照をしています(※)が、基本的にはセルを必要していません。エラー回避さえすれば、そのまま使えます。
 ※最後に焦点をセルに移すため、最初にカーソルがあったセルをアクティブにしている。

 おしまい。

0 件のコメント: