カテゴリー
Microsoft

【Excel VBA】ダックタイピングでマップを実装するコード

【Excel VBA】Range.Value (2 次元配列) の行・列を操作するクラスのコード – oki2a24 にて RangeValue インスタンスに関数名を引数に渡してマップ処理をできるようにしてみました。けれども、支障があるくらい遅かったですの><。ですので結局マップで回す部分を取り出して、別の関数に渡してやり、結果を RangeValue インスタンスの元の場所に戻してやる、という方法を取りました。

別の方法として、ダックタイピングで関数をもつオブジェクトを RangeValue インスタンスに渡すのはどうかしら?と思いつきました。今回はその記録ですの♪

ポイント

  • ダック・タイピング – Wikipedia
  • ダックタイピングを試す前は、CallByName を使って擬似的にマップを実現した。
  • CallByName は遅かった。
  • 引数にオブジェクトを渡し、関数内でオブジェクトにあるはずの関数を呼び出してはどうか? → ダックタイピング
  • ダックタイピングでのマップも、思ったほど早くなかった。CallByName よりもわずかに早い程度。比較方法がよくないか?