2026/04/30

リスト配列の要素数を取得

以前 リスト配列 について紹介しました。

通常の配列は要素を番号で指定しますが、リスト配列は名前などのキーで管理します。例えば、notes.ini のエントリを管理する場合を考えてみましょう。

[Notes]
KitType=1
Directory=c:\Lotus\Notes\Data
UserInterface=ja
InstallType=2
InstallMode=1
NotesProgram=c:\Lotus\Notes\
FaultRecovery_Build=Release 14.5.1
Timezone=-9
         ・・・

エントリ数は環境によって違いますし、記述された順番もバラバラです。通常の配列ではすべての要素を順にチェックしないと目的にたどり着けませんが、リスト配列だと一発です。

   ' asNotesIni は環境変数名をキーにその値を保持している前提
    MsgBox asNotesIni("Directory")    'データディレクトを表示

細かな使い方は冒頭のリンクの記事を参照いただきたいのですが、うまく使うとプログラムがシンプルにわかりやすく記述できます。

使用頻度が増えてきて初めて気が付いたことがあります。リスト配列内の要素数を取得できないのです。通常の配列で Ubound に相当する機能ですね。

ざっとヘルプを確認する限り見当たらないので自作しました。

Function ListCount(vasList As Variant) As Integer
   Dim i As Integer

   i = 0
   If IsList(vasList) Then
      ' リスト配列の場合件数をカウント
      ForAll v In vasList
         i = i + 1
      End ForAll
   End If

   ListCount = i
End Function

引数で受け取った値がリスト配列か判定し、リストの場合 ForAll でループを回して、件数を数えるだけのシンプルな関数です。

いざ必要となった時に作るのは面倒なので掲載しておきます。


0 件のコメント:

コメントを投稿