コード生成グループ「直接コード生成」の解説
- yuji fukami
- 10月19日
- 読了時間: 3分
概要
書籍「Excel VBA開発を超効率化するプログラミングテクニック」の特典であるIkiKaiso2.xlamのリボン登録マクロの解説のための特設ページです。
出版社の書籍のページ⇒https://gihyo.jp/book/2024/978-4-297-14023-6
リボン登録マクロ全体解説ページ⇒https://www.softex-celware.com/post/ikikaiso2
本ページではIkiKaiso2.xlamの「コード生成」グループの「直接コード生成」ボタンの使い方を解説します。

別の記事の「静的コード生成」は次のようなSheetオブジェクトやRangeオブジェクトを変数として参照するようなコードを自動生成する処理でした。

今回の「直接コード生成」は選択したセルを直接参照するようなコードを自動生成します。

解説
用途
セル範囲を直接参照するコードを自動生成する
まず上記の図で作成したコードの用途として、次のように「特定の変数にセル値を格納する」部分だけを選択セルから自動生成したりします。

「この変数にはこのセルの値を格納する」というのがすでに決まっている場合は、「セルを選択してボタンを押すだけ」でコードが自動生成されるので、コーディングの効率化に繋がります。
具体的に使用している例の動画は下記のようになります。
使い方(単一セルの場合)
選択セルが単一セルの場合、「直接コード生成」で生成できるコードは下記の4通りです。すべて「B2」セルを参照している場合とします。(ワークシートオブジェクトは上記例に沿って「Sheet3」としておきます。)
① Sheet3.Range("B2").Value
② Sheet3.Range("B2").Offset(1, 0).Value
③ Sheet3.Range("B2")
④ Sheet3.Range("B2").Offset(1, 0)
基本的に②は使う場面がほとんどないのですが、①③④は使用する場面がそれぞれ異なってきます。
「直接コード生成」をクリックすると2つの質問のメッセージが表示されますので、それぞれの「はい」「いいえ」の回答に基づいて上記の4パターンのコードが生成されます。

具体的用途は下記の通りです。
①はセルから値を取得するだけの場合で用います。
②はセルを変数で参照しておいて、そのセルに値を入力したりなど後で何か処理をする場合に用います。
③は表のヘッダーで基準セルから1つ下のセルを左上の基準として二次元配列を出力するためのセルを参照したりする場合で用います。
このほかにもその場に応じた用途がいろいろ出てきますが、これらの用途に合わせて別々のコードを生成したりします。

使い方(複数セルの場合)
複数セルの場合は2つ目の質問メッセージ「1つ下にオフセットしますか?」は出てきません。代わりに「複数セル範囲の1セル目だけにしますか?」と質問が追加されます。
具体的に、質問に対する全分岐と結果をまとめると次のようになります。

すべて「C2:G2」セルを選択している場合とします。(ワークシートオブジェクトは上記画像に合わせて「Sheet5」としておきます。)
質問に回答して分岐した結果で生成されるコードをまとめると次のようになります。
① Sheet5.Range("C2:G2")(1).Value
② Sheet5.Range("C2:G2").Value
③ Sheet5.Range("C2:G2")(1)
④ Sheet5.Range("C2:G2")
複数セルの場合②のように「Range("C2:G2").Value」とすると単一の値ではなく配列が返ってきます。上記画像のように「セルからファイルパスを取得する場合」は次の図のようなコードになってきます。
一緒に解説もつけていますが、もし「(1)」をつけないと配列となるのでエラーメッセージが表示されます。

上記の様に「単一セル」の場合だけでなく「複数セル」の場合も考慮したコード生成を行っています。
ちなみに「複数セル」の場合は下方向にオフセットする、などのようなことは滅多に存在しないので質問は出てこないようになっています。



コメント