top of page

​タグ一覧

配列処理(76)

シート・セル操作(34)

階層化フォーム(33)

ファイル操作(31)

開発事例(26)

図形操作(24)

設計思想(14)

講座実施報告(12)

開発効率化(10)

ユーザーフォーム(10)

コード自動生成(10)

ココナラ(9)

数学(9)

文字列操作(8)

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

GAS(7)

Webアプリ(6)

副業(5)

アニメーション(5)

技術解説(4)

その他(5)

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

OneDrive(4)

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

クリップボード(4)

条件付き書式(4)

介護・福祉(4)

小説(3)

HTML(3)

JavaScript(3)

公開ツール(3)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

Antigravity(2)

デスクトップアプリ(2)

スクレイピング(1)

スプレッドシート(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

超勉強会(1)

溶接ロボット(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

WebAPI(1)

学校(1)

CAD(1)

PowerShell(1)

python(1)

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

2025年12月19日
読了時間: 2分
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」で統一しているため、運用上の混乱が起きにくい(汎用関数群と相性が良い)


<関連コード>

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


<関連記事>

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

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


<コード>


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

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

softex-celwareロゴ 透過 横長.png

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page