KB4512501エラー(プロシージャの呼び出し、または引数が不正です)

8/26にマクロが動かなくなったという連絡があり、見てみると、 「プロシージャの呼び出し、または引数が不正です」が出るようになっていました。 調べてみると2019/8/14のWindowsUpdateのKB4512501で、Variant型の変数に空配列を渡すと、エラーになるように改訂されたらしいです。これは不具合っぽいので遠からず直すと思われますが現状不透明。 なのでその回避策の例。戻り値が Variant型 なので、配列でなく、空文字列を返すようにしてみました。
Variant型の変数に空配列を渡すのは、C言語でいうヌルポインタを渡すようなイメージなので、セキュリティ上好ましくないということなんですかね…。ああ面倒。
①「配列格納」で、1件も無い場合は、空配列でなく""を返すようにした。

Private Function 配列格納(QRシート As Worksheet, 開始行 As Integer, 列 As Integer) As Variant
    Dim 配列 As Variant
    Dim 行 As Integer
    Dim 終了行 As Integer
    Dim n As Integer
    
    配列 = Array()
    n = 0
    終了行 = 開始行 + 9 '10個のカラムなので9足したものが終了行
    For 行 = 開始行 To 終了行
        If (QRシート.Cells(行, 列).Value <> "") Then 'ヌルでなければ格納
            n = n + 1
            ReDim Preserve 配列(n - 1) 'リサイズ
            配列(n - 1) = QRシート.Cells(行, 列)
        End If
    Next 行
    If (n > 0) Then
        配列格納 = 配列
    Else
        配列格納 = "" '2019/6/27 KB4512501エラー(プロシージャの呼び出し、または引数が不正です)対策追加 ヌル配列でなく空白文字列を返すようにする
    End If
End Function

②配列格納の戻り値を使う「抽出チェック」で、引数が""の場合は、空配列として扱うようにした。

Private Function 抽出チェック(文字列 As Variant, 抽出条件 As Variant, 除外条件 As Variant) As Boolean
    Dim n As Integer
    Dim 繰り返し数 As Integer
    
    抽出チェック = False
    If IsArray(抽出条件) Then
        繰り返し数 = local_UBound(抽出条件) 'UBoundの戻り値=配列個数-1
        If (繰り返し数 >= 0) Then 'ヌル配列でなければ
            For n = 0 To 繰り返し数
                If (文字列 = 抽出条件(n)) Then '文字列が一致すれば抽出
                    抽出チェック = True
                End If
            Next n
        Else
            抽出チェック = True '条件の記入が無ければ全抽出
        End If
    Else
        抽出チェック = True '条件の記入が無ければ全抽出
    End If
    If (抽出チェック = True) Then '抽出条件を満たした場合、続けて除外条件を確認
        If (IsArray(除外条件)) Then
            繰り返し数 = local_UBound(除外条件) 'UBoundの戻り値=配列個数-1
            'Debug.Print 繰り返し数
            If (繰り返し数 >= 0) Then 'ヌル配列でなければ
                For n = 0 To 繰り返し数
                'Debug.Print 文字列 & " " & 除外条件(n)
                    If (文字列 = 除外条件(n)) Then '文字列が一致すれば除外
                        抽出チェック = False
                    End If
                Next n
            End If
        Else
            抽出チェック = True '条件の記入が無ければ全抽出
        End If
    End If
End Function