クラスモジュール:ArrayEditの改修

当ブログで公開しているクラスモジュール:ArrayEditに不具合が見つかった。
使っている方は殆ど居ないと思っているが、念のためお知らせしておく。
f:id:Infoment:20201214224625p:plain

対象となるのは、↓ で公開中のArrayEditに含まれるCompareResultArrayメソッド。
infoment.hatenablog.com

当該メソッドは二つの配列について、指定列をユニークなキーとして比較し、
その結果を配列で返すというもの。

例えば、このように二つのテーブルがあるとする。
f:id:Infoment:20201214225125p:plain

この二つの値を配列に格納した上で、その違いを求めてシートに貼付けてみる。

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

結果として、変更されたもの、削除されたもの、追加されたものを明示している。
f:id:Infoment:20201214225321p:plain

ところで今日、「No」ではなく「コード」で比較したところ、全く意図しない結果となった。
f:id:Infoment:20201214225637p:plain

arr1とarr2の内容に一致する箇所は一つもなく、全く別の配列であることを意味している。何でこんなことに?

ということで色々調べてみて、分かった。

キーとなる列番号に何を指定したとしても、基準と比較する列番号が「1」で決め打ちになっていた

ことが原因だった。

ということで先程慌てて、上記を加味したうえで更新した次第。

考慮漏れ、失礼いたしましたm(_ _)m

お詫びと訂正のお知らせまで。