top of page

​タグ一覧

配列処理(54)

階層化フォーム(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)

PushValueArray1D|一次元配列を拡張して要素を追加(Empty/Object対応)Excel VBA

PushValueArray1D|一次元配列を拡張して要素を追加(Empty/Object対応)Excel VBA

<概要 (拡張)>

PushValueArray1D は、一次元配列の末尾に要素を追加するための関数です。VBAでは配列に Push のような標準機能がないため、要素追加のたびに ReDim Preserve を書く必要があり、コードが散らかりがちです。


この関数は次の点が特徴です。

  • 可変長引数(ParamArray)で、複数の値を一度に追加できる

  • Array1D が Empty の場合でも追加できる(初期化不要)

  • 追加する値が Object の場合は Set 代入で正しく格納できる

  • 内部では ExpandArray1D を使って 配列を指定数だけ拡張してから値を詰める


「配列を増やして、最後に追加する」という処理を 1行で書けるようにするための汎用関数です。


使い方(要点)

  • 既存の一次元配列に追加するarr = PushValueArray1D(arr, 追加値1, 追加値2, ...)

  • まだ配列が Empty の状態でもOKDim arr As Variant のまま使える(ReDim不要)

  • Object を追加する場合もOK(例:Dictionary、Collection、Rangeなど)


<実行例>

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

 

 実行結果のイミディエイトウィンドウは次のようになります。


イミディエイトウィンドウの実行結果

最初は arr が Empty でも、PushValueArray1D 実行で 1 To n の配列として自動生成される

  • 2回目以降の Push では、既存要素はそのまま保持したまま末尾に追加される

  • Object を追加した場合、Set 代入で入るため、参照が壊れずに格納される(出力では [Object] Type=Dictionary のように確認できる)


注意点・補足(短め)

  • ExpandArray1D 側で 一次元配列チェック(IsArray1D / IsArray1DStart1)を行う前提

  • ただし PushValueArray1D は Array1DがEmptyのケースを先に分岐しているため、未初期化でも使える

  • 「開始要素番号は 1」で統一しているため、運用上の混乱が起きにくい(汎用関数群と相性が良い)


<関連コード>

 今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。


<関連記事>

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

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


<コード>


コメント

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

評価を追加
Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page