概要
ConvArray1D_Start1は、0始まりの一次元配列を、1始まりの一次元配列へ変換する関数です。
Splitで作った配列は0始まりになります。一方、Excelのセル範囲から値を扱う処理や、今回の入力規則リスト切替処理では、1始まり配列にそろえると扱いやすくなります。
使う場面
Splitで作った0始まり配列を1始まりへそろえたい- 入力規則リストの候補を配列として扱いたい
- 配列の添字ルールを統一して、後続処理を単純にしたい
- 1始まり前提の共通関数へ配列を渡したい
使用例
Dim values As Variant
values = Split("未対応,対応中,完了", ",")
values = ConvArray1D_Start1(values)
MsgBox values(1)
コピー可能な実装コード
ConvArray1D_Start1.bas
vba
コードを読み込み中...初心者向けコード解説
最初にIsArray1Dで、入力が一次元配列かどうかを確認します。二次元配列などが入った場合は、ここで処理を止めます。
すでにLBound(Array1D, 1) = 1なら、変換の必要はありません。そのまま元の配列を返します。
0始まりの場合は、ReDim Output(1 To N + 1)で1始まりの出力配列を作り、Array1D(I - 1)をOutput(I)へ移します。オブジェクト配列も扱えるように、IsObjectの場合はSetで代入しています。
関連記事
- 入力規則リストを取得するGetCellValidation
- 一次元配列から値の位置を取得するGetNumFromArray1D
- 入力規則リストを矢印ボタンで切り替えるEventShowMoveSpinButton_Value
注意点
- 一次元配列だけを対象にしています。
- すでに1始まりの配列は、そのまま返します。
Splitの結果を扱うときに特に便利です。- 配列の添字を変換すると、元の添字番号とは意味が変わるため、呼び出し側の前提をそろえて使います。
IsArray1Dも同じモジュール内、または同じブック内に必要です。
軽いまとめ
ConvArray1D_Start1は、配列の開始番号をそろえるための地味ですが便利な部品です。入力規則リストや候補リストを複数の関数で受け渡すときに、1始まりへ統一しておくと後続処理が読みやすくなります。
