'ByRef' パラメータ '<parametername>' の値を、一致する引数に戻してコピーする際の、'<typename1>' から '<typename2>' への暗黙的な変換です。

更新 : 2007 年 11 月

プロシージャの呼び出しに指定された ByRef 引数の型が、それに対応するパラメータの型と異なります。

引数を ByRef で渡す場合、Visual Basic は、参照を渡す代わりに、引数の値をプロシージャ内のローカル変数にコピーする場合があります。このようなケースでは、プロシージャから制御が戻ったとき、Visual Basic はローカル変数の値を呼び出し元のコードの引数にコピーして戻す必要があります。

ByRef の引数の値がプロシージャにコピーされるとき、引数とパラメータの型が同じであれば、変換は必要ありません。しかし、型が異なる場合、Visual Basic は、双方向で変換を実行する必要があります。CType またはその他の変換キーワードをプロシージャの引数またはパラメータで使うことはできないため、このような変換は常に暗黙の変換となります。

既定では、このメッセージは警告です。警告を非表示にする方法や、警告をエラーとして扱う方法の詳細については、Visual Basic での警告の構成 を参照してください。

Error ID: BC41999

このエラーを解決するには

  • 可能であれば、呼び出し元の引数にプロシージャのパラメータと同じ型を使用します。そうすれば、Visual Basic は変換を行う必要がありません。

  • パラメータの型と異なる型の引数を指定してプロシージャを呼び出す必要があるが、値を呼び出し元の引数に戻す必要がない場合は、パラメータを ByRef ではなく ByVal で定義します。

参照

概念

Visual Basic におけるプロシージャ

プロシージャのパラメータと引数

引数の値渡しおよび参照渡し

暗黙の型変換と明示的な型変換