top of page

​タグ一覧

配列処理(67)

階層化フォーム(33)

ファイル操作(23)

シート・セル操作(11)

コード自動生成(10)

ユーザーフォーム(8)

図形操作(7)

GAS(5)

アニメーション(5)

技術解説(4)

副業(4)

考え方(4)

条件付き書式(4)

イミディエイトウィンドウ(3)

Enum(3)

Googleスプレッドシート(3)

ココナラ(3)

クリップボード(3)

介護(3)

開発効率化(2)

イベントプロシージャ(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Excel(2)

Excel小ネタ(2)

数学(2)

Outlook(2)

文字列操作(2)

小説(2)

HTML(2)

JavaScript(2)

日報(2)

カレンダー(2)

パズル(2)

ステータスバー(1)

コード解析(1)

静的変数(1)

OneDrive(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

六角形(1)

Excel遊び(1)

ボウリング(1)

時計(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

イベント(1)

溶接ロボット(1)

VBA(1)

脱Excel(1)

Discord(1)

ECサイト(1)

CSV(1)

楽天(1)

保育士(1)

シフト表(1)

CDP(1)

楽天市場(1)

経理(1)

javascript(1)

医療(1)

文書作成(1)

LookerStudio(1)

シフト(1)

セキュリティ(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

罫線(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

開発事例(1)

コード生成グループ「直接コード生成」の解説

概要

 書籍「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オブジェクトを変数として参照するようなコードを自動生成する処理でした。

静的コード生成の実行例

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

直接コード生成の実行例


解説

 用途

 セル範囲を直接参照するコードを自動生成する


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

直接コード生成の実行例2

 「この変数にはこのセルの値を格納する」というのがすでに決まっている場合は、「セルを選択してボタンを押すだけ」でコードが自動生成されるので、コーディングの効率化に繋がります。


 具体的に使用している例の動画は下記のようになります。



 使い方(単一セルの場合)

 選択セルが単一セルの場合、「直接コード生成」で生成できるコードは下記の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)」をつけないと配列となるのでエラーメッセージが表示されます。

複数セルでの値取得の注意点

 上記の様に「単一セル」の場合だけでなく「複数セル」の場合も考慮したコード生成を行っています。

 ちなみに「複数セル」の場合は下方向にオフセットする、などのようなことは滅多に存在しないので質問は出てこないようになっています。

コメント

5つ星のうち0と評価されています。
まだ評価がありません

評価を追加
Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page