クリップボードとイミディエイトウィンドウを活用したコード自動整形テクニック
- yuji fukami
- 2025年11月7日
- 読了時間: 4分
更新日:2025年11月9日
概要
クリップボードへの文字列の入出力と、イミディエイトウィンドウでのプロシージャの実行を利用して、コーディング中のVBAコードを自動的に整形するテクニックを紹介します。
【PR】Discordコミュニティ 「Excel-Fun.xls*」について
本件の内容は2025年11月8日に開催されたLT会での登壇内容を書き記したものです。

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

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」ライブラリが参照必須なので注意です。

「ClipText」文字列(Text)をクリップボードに格納
この2つの汎用プロシージャを実行の間に、クリップボードから取得した文字列をそれぞれの目的通りに編集しています。
その他の例
「クリップボードとイミディエイトウィンドウを活用したコード自動整形テクニック」には上記のコメントをそろえたり、Asをそろえたりする以外に次のようなものもあります。
「ACP」コメントの「・・・」の位置をそろえる。
ACP:AlignmentCodePointの略
ちなみにACAs、ACC、ACP(ACシリーズ)は「ClipAlignmentCode」という共通のプロシージャに別々の引数を渡すだけで構築されています。その引数で「揃える対象の文字列」を指定することが出来るようになっています。

「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つ目の引数で「変数の型」です。詳しくはソースコードを参照してみてください。

ダウンロード
紹介したプロシージャが一式は下記コードを参照してください。
なお仕様に当たっては次の2つの設定を忘れないようにお願いします。
Microsoft Forms 2.0 Object Library」ライブラリを参照すること
VBAプロジェクトへのアクセス許可の設定を設定しておくこと
「開発タブ」⇒「マクロのセキュリティ」⇒「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェック




