【ExcelVBA】ListBoxのコネクタ名を書き換える

前回、Dictionaryを使って、リスト項目の選択順を 図形の選択順に反映できるようにしました。 コネクタも無事、選択順に矢印が向くようになりました。 残すは、コネクタタイプを変更した時の リスト名を書き換える処理を考えて行きます。 まず、使用してるコネクタタイプは二つ、 直線 カギ線 タイプをListBoxに取り込む際、コネクタ名が、長い&英語って事で、 直線・カギ線と省略した、タイプ名を表示するようにしています。 ただ、タイプ変更した場合、リストの表示はそのままになっていて、 変更後に分かりにくい状態になっています。 リストの書き換えについては、二通りの処理を思いついたので、 順に記事にまとめようと思います。 ・リストから当該コネクタ名を検索して書き換える ・Dictionaryに当該コネクタを登録して書き換える まず、コネクタタイプ変更のプロシージャをおさらいします。 ConnectorChangeモジュール(標準モジュール) Sub ConnectorTypeChange(connector As String) Dim con As Shape '選択図形取得' Dim conName As String 'コネクタ名取得' '開始・終了図形の判別子' Const biginShape As Long = 1 Const endShape A…

続きを読む

【ExcelVBA】Dictionaryを使って図形を配列管理する

前回、コネクタのタイプ変更をListBoxからできるようにしました。 範囲選択でシェイプを選択して、コネクタだけをListBoxに取得したのですが、 フロー図形を省いているって事は、フロー図形のみ取得する事もできる訳で… コネクタ作成もListBoxが活用できるやん!って事で処理を作る事にしました。 新しくbookを作成して、今まで作った処理を盛り込んで、 実際に使える物に仕上げていきたいと思います。 まずコネクタ追加なんですが、ListBoxが必要になるので、 その辺りから準備します。 UserFoam上部に、選択中図形取得ボタンを設置。 コネクタ作成・コネクタ変更のListBoxを、2つを用意します。 どちらのListBoxも、ColumnCountを2、ColumnWidthsを50pt,0ptに設定します。 MultiSelectを、Single→Multiに変更して複数選択できるようにします。 選択中図形取得については、前回記事を流用して作ります。 標準モジュールを2つ追加して、 シェイプ管理用のShapeManagerモジュール UserFoam管理用のPanelManagerモジュール を作ります。 まずは、選択中図形取得から ShapeManager(標準モジュール) Option Explicit Sub SelectionShapeSearch() Dim sh As Shap…

続きを読む

【ExcelVBA】ListBoxを使ってコネクタを選択する

前回、コネクタタイプを変更できるようにしたのですが、 選択範囲内のコネクタが全て変更されてしまうので、 選択したコネクタだけを変更できるようにしたいなと考えています。 Ctrl+で選択もいいのですが、 複数あった場合、一つ一つクリックしていくのって手間が掛かります。 そこで何かいい方法がないかとネットを渡り歩いていた所、 Infomentのブログ ~Excel VBA奮闘記~ さんのブログを見つけました。 フローチャート作りをされていて、 詳しくコードを説明されているので参考にさせて頂きたいと思います。 リストボックスで選択した項目に対応するオートシェイプを選択する 有用な記事を有難うございます。 この場を借りてお礼申し上げます。m(_ _)m 早速、この記事を参考に導入してみます。 まずは、コネクタを読み込むリストボックスが必要になるので、 新しくUserFoamを追加します。 今回は、UserFoam2が空いてるので、そこに作って行きます。 必要なツールは、リストボックス・ボタン3つです。 コネクタの名前を取り込むリストボックス 範囲選択した図形の中から、コネクタを取得するボタン コネクタタイプを切り替える各ボタン2つです。 続いて、UserFoam2の管理用モジュールを作ります。 標準モジュールを追加して、UF2Controllerとリネームしておきます。 UF2Controller(標準モジュール) Opti…

続きを読む

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

続きを読む