パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

模様を作って遊ぶ

2011-12-14 12:52:27 | ExcelVBA
今日は、エクセル上で、模様みたいなものを作って遊びましょう。

こんな感じです。



はっきり言って、遊びです。ご了承ください。

この模様は、直線という図形をたくさん使って表現されています。

そのようなプログラムを作成する必要があります。

エクセルを起動し、Altキーを押しながらF11キーを押して、Visual Basic Editorを表示します。

「挿入」メニュー、「標準モジュール」とクリックし、コード画面を表示したら、以下のように書きましょう。

Sub main()
  'きれいな模様を書く
  Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double
  Dim i As Integer
  For i = Selection.Left To Selection.Left + Selection.Width Step 5
    x1 = i
    y1 = Selection.Top
    x2 = (Selection.Left + Selection.Width) - (i - Selection.Left)
    y2 = Selection.Top + Selection.Height
    Call DrawLine(x1, y1, x2, y2)
  Next
  Range("A1").Select
End Sub

Private Sub DrawLine(ByVal x1 As Double, _
                  ByVal y1 As Double, _
                  ByVal x2 As Double, _
                  ByVal y2 As Double)
  '直線を引く
  With ActiveSheet.Shapes.AddLine(x1, y1, x2, y2).Line
    .ForeColor.RGB = RGB(0, 0, 255)
    .Style = msoLineThickThin
  End With
End Sub


Sub DeleteShapes()
  Dim s As Shape
  For Each s In ActiveSheet.Shapes
    s.Delete
  Next
End Sub

画像も載せておきます。



mainプロシージャをご覧ください。
繰り返し処理をおこなっています。その中で呼ばれているDrawLineが直線を引くためのプロシージャです。
引数に、開始点のx座標とy座標、終了点のx座標とy座標、都合4つを指定すると直線を引くことができます。
選択されたセル範囲に関して、開始点と終了点を巧みにずらして直線を引いているのです。
線の色は、RGB関数で指定しています。

エクセルに切り替えたら、適当なセル範囲を選択して、mainを実行してみてください。
何回も実行してみてください。
直線を消したいときは、DeleteShapesプロシージャを実行してください。すべての直線が削除されます。




だい

コメント (3)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 今週のおすすめ記事 | トップ | スマートフォン チェーンネッ... »
最新の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
遊び (ヨッシー)
2011-12-14 17:42:04
こんな遊び心大好きです。これでプログラム
作りたいと思う人出てくるかもね(^^ゞ

曲線も期待してます。
返信する
ヨッシーさんへ (だい)
2011-12-14 18:53:33
ありがとうございます。
また楽しんでもらえるようにネタを考えます(^^)
曲線も面白いものができたら取り上げます。
今後もよろしくお願いします。
返信する
01@appseo.com.tw (ブランド時計)
2011-12-19 10:12:02
はじめまして、とても勉強になりました。これからも頑張ってください
返信する

コメントを投稿

ExcelVBA」カテゴリの最新記事