スキップしてメイン コンテンツに移動

投稿

8月, 2019の投稿を表示しています

8月14日配信のWindows Updateによって引き起こされる、VB6のArray()関数の不具合について

Windows Update後に、VB6で開発したプログラムにて「エラー5:プロシージャの呼び出し、または引数が不正です」のエラーが発生するとの報告がありました。
VB6のArray()関数の挙動が、Windows Updateによって変わってしまったことが原因のようです。 以下のプログラムにて、17行目で上記エラーが発生します。
01: Option Explicit 02:  03: Sub Main() 04:  05:     Dim a As Variant 06:     a = GetArray() 07:  08:     MsgBox CStr(UBound(a)) 09:  10: End Sub 11:  12: Private Function GetArray() As Variant 13:  14:     Dim a As Variant 15:     a = Array() 16:  17:     GetArray = a 18:  19: End Function
定義済みの変数に空っぽの配列を定義し、それをユーザー定義関数の戻り値にセットするとエラーとなってしまうようです。 今まで、私の知る中で、Windows UpdateによってVB6の標準関数の挙動が変化してしまったのは初ではないでしょうか。
VB6だけではなく、Excel VBAでも同様の現象が発生することを確認しました。 ただし、WSHのVBSではエラーが発生しません。
対応策としては、空っぽの配列の変数に代入する方法を、以下のように変更します。
15:     a = Split("/", "")
Array()で空っぽの配列を代入するかわりに、Split()関数にて空配列が代入されるようにします。