クラスモジュール:ArrayEditの改修
当ブログで公開しているクラスモジュール:ArrayEditに不具合が見つかった。
使っている方は殆ど居ないと思っているが、念のためお知らせしておく。
対象となるのは、↓ で公開中のArrayEditに含まれるCompareResultArrayメソッド。
infoment.hatenablog.com
当該メソッドは二つの配列について、指定列をユニークなキーとして比較し、
その結果を配列で返すというもの。
例えば、このように二つのテーブルがあるとする。
この二つの値を配列に格納した上で、その違いを求めてシートに貼付けてみる。
Sub てすと() Dim arr1 As Variant arr1 = ActiveSheet.ListObjects(1).Range Dim arr2 As Variant arr2 = ActiveSheet.ListObjects(2).Range With New VBAProject.ArrayEdit ' 基準となる配列。 .source_array = arr1 ' 基準との比較(1列目のNoをキーとする)。 .CompareResultArray arr2, 1 ' 結果の貼り付け。 .PasteArray "F1", , , , ptTable, True, case_edited End With End Sub
結果として、変更されたもの、削除されたもの、追加されたものを明示している。
ところで今日、「No」ではなく「コード」で比較したところ、全く意図しない結果となった。
arr1とarr2の内容に一致する箇所は一つもなく、全く別の配列であることを意味している。何でこんなことに?
ということで色々調べてみて、分かった。
キーとなる列番号に何を指定したとしても、基準と比較する列番号が「1」で決め打ちになっていた
ことが原因だった。
ということで先程慌てて、上記を加味したうえで更新した次第。
考慮漏れ、失礼いたしましたm(_ _)m
お詫びと訂正のお知らせまで。