【ExcelVBA】図形を線で繋ぐ

図形移動が作れたので、いよいよ大詰めの “線で繋ぐ" でっす。 フローチャートなんで、線で繋がないと意味がないです。 繋ぐ方法は、線を引いて二つの図形を繋げるだけなんで、 簡単と言えば簡単なんですが… まずは、線で繋ぐ部分を手動で行ってみようと思います。 まずは、矢印線を選択してシート上に作成します。 線が引けたら繋ぎたい図形の結合点に、線の結合点を重ねる事で、 図形と線を接合する事ができます。 ひし形の図形にも矢印線を結合して、図形を移動させてみます。 結合された線は、図形と共に移動します。 これをコードにしていきます。 まずは、矢印線を引いてみます。 標準モジュール Option Explicit Sub Connection() Dim arrow As Shape Set arrow = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 250, 300, 250, 370) With arrow.Line .EndArrowheadStyle = msoArrowheadTriangle .Visible = msoTrue .Weight = 1.75 End With End Sub 説明する…

続きを読む

【ExcelVBA】図形をセル中央に整列させる

図形移動の処理を作れたのですが、 Dragで移動させられると楽なのにと思っています。 そこで、Drop時にセルの中央に合わせられないかと考えていたのですが、 実現が難しいんですよね。( ̄~ ̄;) ウーン いろいろと考えて思いついたのが、 図形を一括で整列させる方法です。 Drop時にセル中央に移動しなくても 移動させた図形を一括でセル中央に整列させられれば、 もう少し、直感的な作業ができるのでは!?と考えました。 これなら図形を個々に調整するより楽かもって事で処理を考えてみます。 まず図形がどのセル上にあるか判断する必要があります。 セルが分かれば、そのセルの中央に移動させるだけの処理なので簡単に作れそうです。 シート上の図形を取得して、どのセルか割り出します。 標準モジュール Option Explicit Sub CellSearch() Dim sh As Shape 'シート上の図形取得' Dim cell As Range '図形下のセルを取得' For Each sh In ActiveSheet.Shapes With ActiveSheet.Shapes(sh.Name) Set cell = Range(.TopLeftCell, .BottomRightCell) End With …

続きを読む

【ExcelVBA】図形を好きなセルに移動させる

フローチャートを作りたいって事で、 前回は、作図のコードを組む事ができました。 図形が用意できたので、続ていは移動処理を考えてみようと思います。 図形を移動させると綺麗に並べるのに手間が掛かります。 わざわざセルの、グリッド線に合わせたり、目算で中央に合わせたり… 正直面倒でっす。ヽ(´~`;)ウーン 移動させたら自動的にセル中央に揃ってくれると楽なのにと 何度思った事か。 今回は、この辺りを考えてみようと思っています。 移動のさせ方なんですが、Drag&Dropで狙ったセルに移動させる方法が、 直感的で楽な方法なんですが、実装が困難なんです。 マウスのクリックを検知する方法が独特なんです。 フォーム上とかオブジェクト上と限定的で、 シート上では検出するのが難しいんですよね。 WindowsAPIを使えば実装できるようなんですが、 正直、敷居が高くて難しいです。 なので違う方法を考えてみます。 図形を移動させるには、 ・移動させる図形を取得 ・移動先のセルを取得 二つの動作が必要になります。 まずは、図形の取得を作ってみます。 ・選択した図形を取得する まず、どの図形を動かすかって事が分からないと移動させる事もできないので、 選択中の図形を特定していきます。 方法としては、二つあって、 ・全図形の中から選択中の物を探す ・クリックした時に図形を取得する 全シェイプ中から探す場…

続きを読む

【ExcelVBA】指定セルの中央に図形を作成する

ExcelVBAを触り出すと奥が深いと言うか… 分からない事だらけです。(T^T) ヒック 毎日、調べる作るの繰り返しでして、 Unityに戻れるのは、いつになる事やら… そろそろ戻りたいってのもあるのですが、 折角、触れるようになってきたExcelVBAなんで、 最後に、今後使っていける何かを作りたいなと思いました。 自称プログラマーなんで、やはり”フローチャート” 必須ですよね。 プログラムのフロー起こしって、結構面倒だったりします。 Excelで綺麗に仕上げようと思うと手間も掛かります。 なので、マクロで少しでも楽に作成できる物を作ってみます。 フローチャートのマクロで必要な機能とすれば、 ・図形作成 ・図形を綺麗に並べる ・図形移動 ・図形をラインで繋げる こんな感じになりそうです。 今回は、図形作成をマクロで組む事にします。 図形と言っても種類があるので、 各種類を綺麗に配置できるように組んでみたいと思います。 今回、図形は5種類を用意します。 ・シェイプ69番 端子 ・シェイプ61番 処理 ・シェイプ63番 分岐 ・シェイプ67番 書類 ・シェイプ73番 結合 フローの内容によって図形が変わるので、 今回は、プログラムで良く使う5つをピックアップしてみました。 これを作図して、綺麗に並べようと思います。 まず作図なんですが、 ActiveSheet.Shapes.AddSh…

続きを読む