【ExcelVBA】コネクタの種類を変更する

長らくブログ更新をサボって申し訳ないです(ToT)>゛スンマセン いろいろとやる事があって、暫く触れなかったので、 記事を書く事もできませんでした。 7月中は、なにかと忙しいので更新頻度は低いですが、 ぼちぼちと処理を作っていこうと思うので、温かい目で見守って頂けると助かります。 さて、フローチャート作りも、いよいよ大詰めになりました。 最後は、コネクタのタイプを変更するです。 コネクタのタイプを変更できるようにする意味なんですが、 接続した図形を移動させた場合、位置によって線タイプを変更する必要があります。 例えば、 こんな感じで図形を移動させると直線タイプでは表示が分かりにくくなります。 当然、カギ線に変更したいのですが、削除して引き直すってのは面倒です。 なので、コネクタを選択しておいて、タイプを切り替える処理を考えてみます。 単純に切り替えるだけでは、面白くないので、 カギ線の時は、結合点も変更できるようにしてみたいと思います。 はたして上手く作れるのか… ( ー̀ωー́ ).。oஇ 選択中のコネクタのタイプを切り替えるには、 現状のタイプを判別できないと切り替える事もできないので、 コネクタタイプを取得して、判別できるようにします。 コネクタのタイプを取得するには、ConnectorFormatプロパティを使います。 標準モジュール Option Explicit Sub Typ…

続きを読む

【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 説明する…

続きを読む