トップに戻る

エクセルでグラフィック part 2

パート1で、とりあえず、線、円、長方形を、描きました。
では、それら、図形に、いろいろな効果を、持たせてみようと思います。
Public Sub gr()
      Dim li As Shape

      Set li = Sheet1.Shapes.AddLine(0, 100, 300, 100)

End Sub
先ず、パート1に習って、直線を、引いてみます。
今回は、チャート上でなく、シート上に
直線を描いてみました。チャート上だけではなく、シート状にも、
図が描けるので、今回は、シート上にしました。
左記のようなコードを、書き、シート画面を表示させて、
ツール、マクロ、grを実行してみてくさい。
シート上に、線が表示されます。

次に、線に、いろいろな効果を与えます。
Public Sub gr()
       Dim li As Shape

       Set li = Sheet1.Shapes.AddLine(0, 100, 300, 100)

      li.Line.ForeColor.RGB = RGB(&HFF, 0, 0)
      li.Line.Weight = 3
      li.Line.DashStyle = msoLineRoundDot


End Sub
線に、色、太さ、線の種類を設定してみました。
shapeオブジェクトを作り、それに、
直線を、セット、
セットされたラインの色、今回は、赤、太さを、3、線のスタイルを丸ドットでに
してみました。
RGBメンバは、Red・Green・Blueを256段階で、調整します。
&HFFは、16進数を10進数に変換していて、255を示します。
赤一色で、赤が最高の濃さになっている事を示します。
太さは、多分、Ptが、単位だと思います。
線のスタイルは、左下のように、メニューが出ますので、それから選べます。

これを、ツール、マクロ grを実行すると、
シート上に、設定したとおりの、線が、描かれます。

注意;メニュー表示が、消えてしまったら、所定の所に
カーソルを持ってきて、Ctrl + spaceキーを押せば、再表示されます。

次に、描画された図を、移動させたり、回転させて見ます。
Public Sub gr()
  Dim re As Shape


  Set re = Sheet1.Shapes.AddShape(msoShapeRectangle, 0, 0, 100, 100)

 Application.Wait (Now)
  DoEvents

  Application.Wait (Now + TimeValue("00:00:05"))

  re.IncrementLeft (200)

 Application.Wait (Now)
  DoEvents

  Application.Wait (Now + TimeValue("00:00:05"))

  re.IncrementTop (200)

 Application.Wait (Now)
 DoEvents

  Application.Wait (Now + TimeValue("00:00:05"))

  re.IncrementRotation (45)


End Sub
今回は、シート1上に長方形(実質的には、正方形なのですが)
を、原点0,0から、5秒後右に200移動して、
さらに、5秒後200下に移動して、
その上、5秒後に45度回転、するコードです。
waitが、多用されていますが、
この様にしないと、移動途中が、表示されず、
最終結果しか、表示されないので、
ノウハウとしてで、使っています。

コード見ても解るように、上の直線の例と今回の例比較してみると

どんな図形でも、shapeに図形をセットして、
その、shapeオブジェクトのメンバやプロパティを変更する
ことにより、どんな図にでも、いろいろな、変化を
与えられる事が解ります。

また、いろいろ、コーディングして、
メニューを見るとわかりように、
まだまだ、いろいろな機能が、使うことが出来るのですが、
今回は、割愛します。

自分で、いろいろ試してみてくさい。

これで、パート2は、終了です。
パート3は、あるかな。????
注 2006年2月1日 修正
Application.Wait(Now)は、DoEventsにしたほうが
良いみたいです。