【ExcelVBA】動的配列で複数図形を一括接続する

最近、ウォーキングをするようになって、 少し減量に成功したケロです。 全然、記事とは関係ない事から書き始めましたが、 ウォーキング1hr~1.5hrほどするとPCを触る時間が減ります。 なのでブログも更新が進まないって事が書きたかったですが… 個人的な話なんでこれくらいにして。 フローの修正が残っていたので、まとめてみようと思います。 今回は、複数の図形に一括で直線を繋げる処理を作ってみます。 カギ線の場合、結合点を指定する必要があるので、 直線のみの対応になります。 ここで考えておく必要があるのが、 ・全図形なのか ・選択した図形なのか の二点です。 フローなら図形が当然増えていきます。 全図形にすると数が多い事や、後から追加した図形の接続を考えると、 選択した図形の一括接続がいいと思います。 まず、以前に作った図形接続のプロシージャを見てみます。 標準モジュール4に作っていたので、リネームしてLineConnectに変更します。 オブジェクト名を変更するとリネームする事ができます。 LineConnectモジュールを開いて、接続プロシージャを開きます。 標準モジュール(LineConnect) Option Explicit Sub Connection() Dim arrow As Shape '矢印線取得' Dim selectSh(2) As Sha…

続きを読む

【ExcelVBA】線を識別してループを飛ばす

フローチャート作りもいよいよ大詰めとなりました。 完成とするには、3つの課題が残っております。 ・図形揃えで線が反応する ・複数図形一括つなぎ ・線種を切り替える 今回は、図形揃えで線を反応させなくする処理を作ります。 おさらいになりますが、 図形の中央揃えをつくりました。 全ての図形と選択図形を中央揃えする、二つのプロシージャを作ったのですが、 標準モジュールが増えたので、どこに組んだか分からなくなるので、 まず、モジュールの名前を変更します。 図形中央揃えは、全図形と選択図形の二つなんですが、 選択図形の場合、線を選ばなければ問題ないので、 全図形の方を修正していきます。 修正する部分を確認する為にプロシージャを見てみます。 標準モジュール(ShapeCentering) Option Explicit Sub PositionCheck() Dim sh As Shape '図形取得' Dim cell As Range '図形下セル取得' Dim posLeft As Double '図形の左位置' Dim posTop As Double '図形の縦位置' Dim leftBorder As Double '横境界線' Dim topBorder As Double '縦境界線' Dim addLeft A…

続きを読む

【ExcelVBA】結合点を選択できるようにする

前回、図形を線で繋ぐ事ができたのですが、 いろいろと修正部分があるので、順次作っていこうと思います。 その前に、今回テストを繰り返す内に、標準モジュールが増えてしまいました。 コードを記載する際、標準モジュールとしていたのですが、 一つのモジュールに、何個もプロシージャを書いてるわけではないので、 分かりにくくなると思います。 どのモジュールに組んでるか分かり易くする為に、モジュール名を変更する事にしました。 モジュール名の変更は、 モジュールを選択するとオブジェクト名が表示されるので、 この部分(赤枠)を書き換える事で好きな名前にする事ができます。 少し逸れたので話を戻して、 今回は、カギ線繋ぎについて修正していきます。 カギ線繋ぎで問題なのが、 結合点が4に固定されてるのは、使い勝手が悪い。 図形を選択してないとエラーが出る。 図形の選択数が、1個の時、3個以上の時、機能しなくなる。 この辺りを修正する必要があります。 修正案として、 ・図形選択を2つに限定する ・結合点を選択できるようにする ・エラー対応 この3つを組み込んでみようと思います。 まずは、エラー対応と図形を2つ選択した時だけ機能する処理を作ります。 標準モジュール(LineConnect) Sub ElbowConnect() Dim arrow As Shape '矢印線取得' Dim s…

続きを読む

【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 …

続きを読む