VBA用LINQ(作成中)

VBALINQ to Objects 「っぽい」ことができるものを作成中。

OneDrive内の「M_Sample」モジュール

GitHub - imihito/VBALinq(碌に使ったことがないのでちゃんと使えてるかどうか…)

基本方針

やりたいこと

VBAで要素の集合に対してLINQ to Objects 「風」に処理をしたい。

考えないこと

型安全性

ダックタイピング上等、レイトバインディング・リフレクション万歳!の精神。

遅延実行

処理自体の遅延は出来そうだけど、処理が面倒になりそうなので考えない。

処理速度

現状(170820)では、効率の悪い処理をしているがとりあえず置いておく。

モジュール構成案

  • 各種LINQ風メソッドを持つクラス
  • デリゲートとして使うためのクラス群(後述)
  • 補助処理を入れた標準モジュール

VBAに無い要素と代替案

IEnumerableインターフェイス

対象要素が列挙可能かどうかわからないので、とりあえずFor Eachしてみる。

作成するクラスにはVBA.Collectionを内蔵させて、そのイテレータを使ってFor Eachができるようにする。

デリゲート

「実行可能な処理」を示すインターフェイスと、それを実装したクラス群を作成し、そのクラス群を組み合わせて処理を示す形とする。