top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(27)

開発事例(20)

シート・セル操作(18)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

図形操作(7)

設計思想(7)

開発効率化(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

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

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

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

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

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

数学(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

ステータスバー(1)

コード解析(1)

OneDrive(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

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

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

UnionCell|Nothing対応Union処理 | Excel VBA

UnionCell|Nothing対応Union処理 | Excel VBA

<概要 (VBAでのUnion関数の代替)>

UnionCellは、Excel VBAで複数セル範囲を結合する際に使用する汎用プロシージャです。

標準のUnion関数は、引数にNothingが含まれるとエラーになるため、条件分岐を都度記述する必要があります。


本プロシージャでは、2つのRangeのうち片方または両方がNothingの場合でも安全に結合処理を行えるように設計されています。


セルの動的収集や、条件付きでRangeを追加していく処理において、UnionCellを利用することでコード量を減らし、可読性と保守性を向上させることができます。


UnionCellは、Nothingチェックを内包したUnion代替処理として、実務で頻繁に利用できる汎用プロシージャです。


<実行例>

 実行例のサンプルコードは次の通りです


UnionCellを使わない場合の特徴

Demo_NotUse_UnionCell では、VBA標準の Union 関数をそのまま使用しています。

この場合、結合先の Rng が Nothing の状態で Union を実行するとエラーになるため、毎回以下のような判定処理が必要になります。


  • Rng が Nothing かどうかを判定

  • Nothing の場合はそのまま代入

  • Nothing でない場合のみ Union を実行


結果として、セルを1つ結合するだけの処理であっても、If ~ Else ~ End If を含む複数行のコードを書く必要があります。


この判定はループのたびに繰り返されるため、処理の本質である「セルを結合する」という意図が、分岐コードに埋もれてしまいがちになります。


UnionCellを使う場合の特徴

一方、Demo_Use_UnionCell では、UnionCell 関数を利用してセル結合を行っています。

UnionCell は内部で Nothing 判定を行うため、呼び出し側では Range が Nothing かどうかを一切意識する必要がありません

その結果、ループ内の結合処理は次の1行だけで完結します。


UnionCellを使わない場合に必要だった5行程度の判定・分岐処理が、1行の関数呼び出しに集約されていることが分かります。


比較から分かるポイント

この2つのコードを比較すると、UnionCell を使うことで次のようなメリットが得られます。

  • Nothing 判定を毎回書かなくてよくなる

  • ループ内のコード量が大幅に減る

  • 処理の意図(セルを結合する)が直感的に伝わる

  • 同じ処理を何度書いてもミスが起きにくい


特に、条件付きでセルを収集する処理や、ループで Range を順次結合していくような実務コードでは、UnionCell を使うことでコーディング負荷を大きく下げることができます。


まとめ

UnionCell は、「Union を書くたびに必要になる Nothing 判定」を関数側にまとめて押し込むための汎用プロシージャです。


その結果、5行かかっていた処理を1行で書けるようになるという点が、本サンプルから直感的に理解できます。


セル結合処理を多用する場面では、UnionCellを導入するだけでコード全体がすっきりし、保守しやすい構成になります。


<関連記事>

 今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。

 コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。


<コード>


Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page