top of page

クリップボードとイミディエイトウィンドウを活用したコード自動整形テクニック

更新日:11月9日

概要

 クリップボードへの文字列の入出力と、イミディエイトウィンドウでのプロシージャの実行を利用して、コーディング中のVBAコードを自動的に整形するテクニックを紹介します。


【PR】Discordコミュニティ 「Excel-Fun.xls*」について

 本件の内容は2025年11月8日に開催されたLT会での登壇内容を書き記したものです。

VBA開発者のための便利マクロ勉強会

 Excel-Fun.xlsとはExcel関係、VBA関係の技術コミュニティです。

Excel-Fun

 

 Excel-Fun.xls*のYouTubeチャンネル⇒https://www.youtube.com/@excel-fun-xls



実際の動きと仕組み


 実際の動き

 タイトルのような「クリップボードとイミディエイトウィンドウを活用したコード自動整形テクニック」とはどのようなものかと最初は実感がわかないので、実際の動きを見てください。


 やっていることは「変数宣言のAsの位置を揃える」と「コメントの『'』の位置を揃える」です。


 「変数宣言のAsの位置を揃える」においての手順は次の通りです。


①変数宣言のコード全体をコピー(クリップボードに格納)する(Ctrl+C)

②イミディエイトウィンドウでACAsというプロシージャを実行する

③自動的にコードウィンドウに戻るのでCtrl+Vで貼付を押すと、As位置がそろったコードが上書きさる。


 「コメントの『'』の位置を揃える」の場合も同様で別で「ACC」というプロシージャを実行しています。


 仕組み図解

 これらが裏で何をやっているかを下記で図解しておきます。


クリップボードとイミディエイトウィンドウを活用したコード自動整形の図解
クリップボードとイミディエイトウィンドウを活用したコード自動整形の図解

 

 クリップボードに文字列格納(Ctrl+C)およびクリップボードの文字列貼付(Ctrl+V)は人が行いますが、ACAsを実行することで「クリップボードに格納された文字列を自動的に編集してクリップボードに格納しなおす」ようなことを行っています。

 

 ちなみに「ACAs」は「AlignmentCode As」の略で、「ACC」は「AlignmentCode Comment」の略で、略称にしておくことですぐにイミディエイトウィンドウで実行できるようにしています。

 


 クリップボードの入出力

 ACAs、ACCともにクリップボードの入出力という処理を行っていますが、そのための処理として下記汎用プロシージャを先に紹介します。


 「GetClipText」クリップボードに格納中の文字列を取得

「Microsoft Forms 2.0 Object Library」ライブラリが参照必須なので注意です。


「Microsoft Forms 2.0 Object Library」ライブラリの参照
「Microsoft Forms 2.0 Object Library」ライブラリの参照

 「ClipText」文字列(Text)をクリップボードに格納


 この2つの汎用プロシージャを実行の間に、クリップボードから取得した文字列をそれぞれの目的通りに編集しています。



その他の例

「クリップボードとイミディエイトウィンドウを活用したコード自動整形テクニック」には上記のコメントをそろえたり、Asをそろえたりする以外に次のようなものもあります。


「ACP」コメントの「・・・」の位置をそろえる。

 ACP:AlignmentCodePointの略

 


ちなみにACAs、ACC、ACP(ACシリーズ)は「ClipAlignmentCode」という共通のプロシージャに別々の引数を渡すだけで構築されています。その引数で「揃える対象の文字列」を指定することが出来るようになっています。

ACシリーズ


「DA」変数宣言の後ろに変数格納部分のコード作成

DA:Dim ** As の略


「APH」プロシージャの宣言部分をAsで揃える

「GA」プロシージャの宣言部分から引数説明用のテンプレートコメントを作成

 APH:AlignmentProcedureHeadの略

 GA:GetArgumentListCommentの略



「PCStr」String型のプロパティを設定するためのPropertyプロシージャを自動作成する。

PC:PropertyCodeの略


手順として

①Private変数を定義する。この際「Pri**」の変数名にすること。例「Private PriName As String」

②Private変数の「Pri」以降の文字列をコピー(クリップボードに格納)。

③「PCStr」をイミディエイトウィンドウで実行

④Propertyプロシージャのコードが自動生成されてクリップボードに格納されているので、好きな所で貼り付け


 PCStrは「String型」のプロパティのPropertyプロシージャを生成しますが、他の型のプロパティのPropertyプロシージャはそれぞれ次のプロシージャが用意されています。

  • PCBoo・・・Boolean型

  • PCLng・・・Long型

  • PCDbl・・・Double型

  • PCDate・・・Date型

  • PCVari・・・Variant型

 これらは値型(プリミティブ型)の変数ですが、オブジェクト型は「PCSet」を利用して、引数でその変数型の名前を入れる必要があります。例えばRange型の場合は次のような動画の使い方となります。

 


 ちなみに、これらのPC**シリーズのプロシージャは共通のプロシージャ「ClipMakePropertyCode」に2つの引数を与えて別々のものを構築しています。

 1つ目の引数で「Let」or「Set」、2つ目の引数で「変数の型」です。詳しくはソースコードを参照してみてください。

PCシリーズ

ダウンロード

 紹介したプロシージャが一式は下記コードを参照してください。

 なお仕様に当たっては次の2つの設定を忘れないようにお願いします。

  • Microsoft Forms 2.0 Object Library」ライブラリを参照すること

  • VBAプロジェクトへのアクセス許可の設定を設定しておくこと

「開発タブ」⇒「マクロのセキュリティ」⇒「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェック

VBAプロジェクトオブジェクトモデルへのアクセス許可の手順
VBAプロジェクトオブジェクトモデルへのアクセス許可の手順


コメント


Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page