2007年12月29日土曜日

○第70回目 図形編(その8) 図形に色を塗る、コネクタを全部削除、図形の整列
 ※マクロはエクセル2007でのものです。


 6.図形に色をつける
 色の道は難しいと昔から言いますが、本当にそうです。いろいろありすぎてどこに焦点を定めたらいいのかわからないのです。ということで、色をパターン化することにします。
 機械的には、どのくらいパターンがあるのかは不明です。突き止める気も起こりません。ただその一端を垣間見なければ進まないので垣間見てみることにします。
 ワークシートに、1から64ぐらいまでの連番を縦に振ってください。
 そして、その番号を指定して、"図形の一括作成"を動かしてみてください。図形の種類は面取り長方形です。これでは何も起こらないので、
 この中に、次のコマンドを入れてください。
  Selection.ShapeRange.Fill.ForeColor.SchemeColor = i
 すると、図形を描いた後で、色が付加され、その後それらが表示されます。
 それを見て、標準値にしたい色のパターンを選んでください。
 筆者はパステルカラー系のものを選びました。
 その番号を指定することが今回のメインです。
 手順を記すと、
 1.色をつける図形の範囲を入力する
 2.色番号を入力する。これには透明度の指定も含めます
 3-1.入力された色番号で指定の図形に色を塗ります。
 3-2.指定された透明度を適用します

 1.は、毎度おなじみの…なので、省略します。

 2.は、(この色群はパステルカラー系です)
 iro = InputBox("色番号を入力してください。 " & vbCrLf & _
  "40=⇒ 青色 " & vbCrLf & _
  "41=⇒ 水色 " & vbCrLf & _
  "42=⇒みどり " & vbCrLf & _
  "43=⇒黄色" & vbCrLf & _
  "44=⇒藍色 " & vbCrLf & _
  "45=⇒ピンク " & vbCrLf & _
  "46=⇒ムラサキ " & vbCrLf & _
  "47=⇒オレンジ " & vbCrLf & _
  "1=⇒白 " & vbCrLf & _
  "0=⇒透明 " & vbCrLf & _
  " " & vbCrLf _
  , xpos:=2000, ypos:=3000, Default:=11)
 '※通常の色系では、SchemeColor = 10 '赤、13 '黄色、11 '黄緑、9 '白

 3-1、は、
 ActiveSheet.Shapes(i).Select
 Selection.ShapeRange.Fill.ForeColor.SchemeColor = iro
 ※単純極まりません。

 3-2.は、更に透明度の入力をし、その内容で処理します。透明度は100%透明は色なしです。
  toumei_do = InputBox("透過度を入力してください。0-1.0 " & vbCrLf & _
  " " & vbCrLf _
  , xpos:=2000, ypos:=3000, Default:=0.5)
 透明にするのは、
  ActiveSheet.Shapes(i).Select
  Selection.ShapeRange.Fill.Transparency = toumei_do
 です。
 ※これも単純極まりません。

 7.コネクタを全部削除
 これは今までのものの簡単な応用です。
 もとのマクロは、"図形の削除"です。
 図形の名前で、カギ型コネクタを判定するのは、"カギ型"になります。コネクタという名称では直線が含まれてしまいます。厳密にコネクタの役割をしたものを選ぶとなると難しいということになりますが、直線は単純な線という位置づけでいくと、"カギ型"という名称がポイントになります。
 図形の名前を取得して、その中に、"カギ型"という文字が含まれている図形だけを削除することになります。

 おしまい。

 いろいろな試行錯誤の結果、現在では次のようにしています。
ActiveSheet.Shapes(i).Select
return_V1 = Selection.ShapeRange.Connector
If return_V1 = -1 And InStr(mm2(i), "直線コネクタ") = 0 Then
ActiveSheet.Shapes(i).Delete
' End If
End If

 8.図形の整列(図形群の横軸をそろえる、縦軸をそろえる、横に均等配置する、縦に均等配置する)
 これはうまくいきません。
 処理対象となる図形をセットするところが難しいのです。
 対応は次回以降。
 
 

0 件のコメント: