top of page

​タグ一覧

配列処理(76)

シート・セル操作(37)

ファイル操作(33)

階層化フォーム(33)

開発事例(31)

図形操作(29)

設計思想(15)

ユーザーフォーム(12)

シフト表(12)

講座実施報告(12)

数学(11)

イベントプロシージャ(10)

開発効率化(10)

コード自動生成(10)

GAS(10)

技術解説(9)

ココナラ(9)

文字列操作(8)

Webアプリ(8)

Googleスプレッドシート(6)

その他(5)

アニメーション(5)

副業(5)

介護・福祉(5)

OneDrive(4)

条件付き書式(4)

イミディエイトウィンドウ(4)

クリップボード(4)

小説(3)

日報(3)

JavaScript(3)

PDF(3)

HTML(3)

公開ツール(3)

クラスモジュール(2)

コード解説(2)

パズル(2)

小ネタ(2)

フリーランス(2)

Antigravity(2)

カレンダー(2)

Enum(2)

医療(2)

LookerStudio(2)

リスキリング(2)

Discord(2)

Outlook(2)

デスクトップアプリ(2)

スクレイピング(1)

WebAPI(1)

PowerShell(1)

文書作成(1)

スプレッドシート(1)

経理(1)

超勉強会(1)

溶接ロボット(1)

楽天市場(1)

VBA不使用(1)

実行予約(1)

CAD(1)

給与計算(1)

QRコード(1)

python(1)

学校(1)

発注書(1)

【Excel VBA】数式の模様を描く作図ツールの実装の工夫3選|自動作図・増減ボタン・画像出力

8 時間前
読了時間: 6分

まずは動画で、3つの工夫の全体をご覧ください(一部の画面は加工しています)。

セルの数値を変えるだけで、幾何学模様がその場で描き変わる。そんな作図ツールを Excel VBA で作りました。リサージュ曲線とトロコイド曲線を組み合わせた模様を描くツールです。

ツールの機能の一覧やサンプルブックのダウンロードは、「Excelで幾何学模様を自動作図するツールを作りました」で紹介しています。

この記事はその続きとして、実装の考え方に絞って解説します。取り上げるのは次の3つです。

  • 数値を変えると自動で描き直す仕組み

  • 選んだセルの横にだけ増減ボタンを出す仕組み

  • 描いた図形を画像ファイルに保存する仕組み

どれも模様を描くためだけのものではなく、ほかの業務のツールにも応用できる作り方だと考えています。コードは、実際のブックから要点を抜き出したものです。

 

工夫1:数値を変えると自動で描き直す

 

計算した座標は、そのままでは描けない

曲線の計算で得られるのは、X と Y の数の並びです。これをシートの図形にするには、2つの問題があります。

1つ目は大きさです。計算結果の範囲はパラメータによって変わるので、そのままではキャンバスからはみ出したり、小さくなりすぎたりします。

2つ目は向きです。数学の座標は Y が上向きですが、シートの Top は下向きです。

計算した座標は数の並びで、数学の座標とシートの座標は上下の向きが逆

 

セルが変わったら、5つの手順で描き直す

処理は次の順番で進めています。

  1. パラメータのセルが変わったことを検知する

  2. XY 座標を計算する(結果は2次元配列で受け取る)

  3. 最大と最小から倍率を決めて、キャンバスに収める

  4. 中心を基準に Y の向きを反転して、シートの位置に置き換える

  5. 古い図形を消して、1本の折れ線として描く

セルの変更の検知から、1本の折れ線で描くまでの5つの手順

最初の検知は、Worksheet_Change と Intersect の組み合わせです。パラメータのセルが変わったときだけ描き直すので、ほかのセルを編集しても処理は動きません。

倍率は、X と Y のうち広い方の範囲がキャンバスに収まるように決めます。上下左右に少し余白を残すため、5%小さくしています。

シートの位置への置き換えは、Left には中心に X を足し、Top は中心から Y を引くだけです。この引き算で上下の向きがそろいます。

この変換は「ConvXYListForSheetCenter」として部品にしています。

描くときは、点の数だけ線を引くのではなく、AddPolyline で全部の点を1本の折れ線にします。図形が1つで済むので、次に描き直すときも名前を指定して消すだけです。初期値の例では、点の数は 1,354 個になります。描画の部品は「DrawPolyLineAddPolyLine」で紹介しています。

実際の画面では、値を変えるたびに模様がその場で描き直されます。

増減ボタンで値を変えると、模様がその場で描き直される

図形が1つにまとまっているので、線だけの表示と塗りつぶしの切り替えも、その図形の設定を変えるだけで済みます。

塗りつぶしをONにすると、線で囲まれた部分が塗られて別の模様に見える

 

曲線の計算方法は書籍で

この記事では、計算した座標を図形にする部分に絞っています。曲線の計算方法を詳しく知りたい方には、次の書籍が参考になります。Excel を使って、ストリング・アートやフラクタル図形などの数学的なアートを作る方法を解説した本です。

 

 

工夫2:選んだセルの横にだけ増減ボタンを出す

 

打ち直しも、ボタンの並べすぎも使いにくい

模様づくりでは、数値を少しずつ変えて結果を見比べます。毎回キーボードで打ち直すのは手間です。かといって、セルごとにスピンボタンを置くと、パラメータの数だけ画面にボタンが並びます。

毎回打ち直す方法と、セルごとにボタンを置く方法の問題

 

ボタンの名前に、幅と範囲を持たせる

そこで、セルを選んだときだけ、そのセルの横にボタンを作ることにしました。前のボタンは消すので、画面に出るのはいつも1組だけです。

セルによって、ちょうどよい増減の幅は違います。そこで、セルごとに下限・上限と、並べる幅を指定しています。

工夫したのは、この幅と範囲をボタンの名前に書き込んでおく点です。たとえば M のセルの「+10」のボタンは、次の名前になります。

ボタンを押すと、Application.Caller で押されたボタンの名前を取得し、Split で分けて、幅・下限・上限を取り出します。

この形にすると、ボタンごとに別のマクロを用意しなくても、増やす処理と減らす処理の2つで全部のボタンを動かせます。設定を保存するためのセルや変数も要りません。

ボタンの名前に幅・下限・上限を入れておき、押されたら名前を分けて使う

実際の画面では、選んだセルに合わせて、幅の違うボタンが横に現れます。

選んだセルの横に増減ボタンが現れる

ボタンを出す部品は「EventShowSpinButton_Multi」、上限・下限の範囲で値を変える部品は「ChangeValueCell」で紹介しています。

 

 

工夫3:描いた図形を画像ファイルに保存する

 

図形には、画像に保存する命令が用意されていない

Excel の図形(Shape)には、画像ファイルとして保存する命令が用意されていません。一方で、グラフ(Chart)には Export という、画像に書き出す命令があります。

図形には保存の命令がなく、グラフにはChart.Exportがある

 

グラフを通り道にして書き出す

そこで、グラフを通り道にしています。手順は次のとおりです。

  1. 背景と模様をいったんグループにして、コピーする

  2. 一時的なシートにグラフを置いて、貼り付ける

  3. Chart.Export で画像ファイルに書き出す

  4. 一時的なシートを消して、グループを元に戻す

グループにしてコピーし、一時シートのグラフに貼り、書き出してから片付ける流れ

書き出しの中心は、次の部分です。

出力する画像の大きさは、グラフの大きさで決まります。ピクセル数を指定しないときは図形の2倍の大きさで書き出し、指定したときは、その幅から倍率を逆算します。式の 1.463 は、指定した幅に合わせるための経験的な係数です。

実際の画面では、ボタンを押すと一時的なシートが一瞬現れ、書き出しが終わるとメッセージが表示されます。

画像出力のボタンを押すと、書き出し完了のメッセージが表示される

 

実務で効いてくる2つの細工

1つ目は、コピーの完了を確かめていることです。クリップボードに図形が入る前に貼り付けてしまうと、処理が失敗することがあります。先にダミーの文字列をクリップボードに入れておき、それが消えたらコピーが終わったと判断しています。

2つ目は、失敗したときの片付けです。ピクセル数が大きすぎて書き出せないときは、一時的なシートを消し、グループも解除してから、ピクセル数を下げるようメッセージを出します。途中で止まっても、シートに余計なものが残りません。

また、ファイル名には全部のパラメータの値を入れています。あとで画像を見返したときに、どの設定で描いたものかがファイル名だけで分かります。

ファイル名にパラメータの値を入れて書き出した画像の一覧

書き出しの部品は「OutputShapeToPicture」で紹介しています。

 

 

ほかの業務への応用

今回の3つの工夫は、作図以外のツールにも使えると考えています。

  • セルの数値から図形を描く:部品の外形、機器の配置図、軌跡など、計算で決まる形の作図

  • 選んだセルに増減ボタンを出す:単価や数量、日付の微調整など、数値を試しながら決める表

  • 図形やグラフを画像に書き出す:報告書やホームページに載せる図の一括作成

 

まとめ

数式の模様を描くツールを題材に、実装の工夫を3つ紹介しました。

  • 計算した座標は、倍率と向きを補正してから、AddPolyline で1本の折れ線として描く

  • 増減ボタンは選んだセルの横にだけ作り、幅と範囲はボタンの名前に持たせる

  • 図形はグラフに貼り付けて Chart.Export で画像にし、使った一時シートは片付ける

ツール全体の機能とサンプルブックは「Excelで幾何学模様を自動作図するツールを作りました」をご覧ください。

その作業、自動化できるかもしれません

毎月くり返している集計・転記・帳票づくりに何日もかかっていませんか。
Excelはそのままで、面倒な部分だけを自動化できます。ご相談は無料です。

softex-celwareロゴ 透過 横長.png

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2026 softex-celware。Wix.com で作成されました。

bottom of page