ConvArray1D_Start1|一次元配列を開始要素番号1に変換 | Excel VBA
- yuji fukami
- 2025年1月24日
- 読了時間: 2分
更新日:1月4日

<概要 (VBA 配列 要素番号)>
ConvArray1D_Start1は、開始要素番号が0の一次元配列を、開始要素番号1の一次元配列に変換するためのExcel VBA用汎用プロシージャです。
Excel VBA標準機能のArray関数やSplit関数を利用して生成された一次元配列は開始要素番号が0となるので、非常に扱いづらい配列となります。この背景で、0開始の一次元配列を1開始に変換する処理が必要になったりします。
関連記事
「VBAで扱う配列の開始要素番号は1にすべきという話」
この変換処理にはこれまたExcel VBAの標準機能のWorksheetFunction.Transpose関数を2回実行することで可能ですが、WorksheetFunction.Transpose関数は
・要素の型を勝手に変換
・処理可能な要素数に上限ある
・要素にオブジェクトが含まれるとエラーとなる
などの欠陥があるので基本的に使用を避ける必要があります。
関連記事
「Transpose関数の欠点(Excel VBA)」
上記のような背景で準備している汎用プロシージャが「ConvArray1D_Start1」です。
ちなみに、名前にある「Conv」は「Convert」の略で「変換する」を意味しています。
<実行例>
このサンプルでは、Array関数で生成された開始要素番号0の一次元配列をzConvArray1D_Start1によって開始要素番号1の配列へ変換しています。
変換後の配列は、LBoundが1、UBoundが元配列の要素数と一致する形となり、For I = 1 To UBound(Array) のような一般的なループ構文で安全に処理できます。
Debug.Printの出力結果からも、要素番号が1から順に並び、元の配列内容がそのまま保持されていることを確認できます。
<関連コード>
今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。
・IsArray1D → https://www.softex-celware.com/post/isarray1d
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。



