固定長文字列の配列またはユーザー定義型の配列を、バリアント型の変数に割り当てることはできません
Variant は、有効な VarType が含まれるデータの割り当てのみを取ることができます。 このエラーの原因と解決策は次のとおりです。
固定長文字列の配列を渡そうとしました。 1 つの固定長文字列が Variant に割り当てられている場合、その文字列は可変長文字列に強制的に変換されますが、この処理は、固定長文字列の配列に対しては実行されません。
配列を渡す必要がある場合は、ループを使用して、配列の個別の要素を、可変長文字列の一時配列の要素に割り当てます。 その後、配列をバリアントに割り当てて、Erase を使用して一時配列の割り当てを解除できます。 ただし、Erase では、固定サイズの配列の割り当てを解除することはできません。
固定長文字列またはユーザー定義型を VarType 関数または TypeName 関数に渡そうとしました。
VarType または TypeName 関数の引数は、有効な Variant 型である必要があります。
ユーザー定義型を Variant 変数に渡そうとしました。 ユーザー定義型の変数全体を Variant に直接割り当てることはできませんが、Array 関数を使用すると、ユーザー定義型の変数の個別の要素を Variant に割り当てることができます。 これにより、バリアントの配列が含まれる Variant が作成されます。 バリアントのこの配列における各要素の VarType は、ユーザー定義型の各要素の元の型に対応します。
固定長文字列またはユーザー定義型の配列を、Variant 引数を必要とするプロシージャ呼び出しで引数として渡そうとしました。 プロシージャが遅延バインドされている場合、つまり、実行時に呼び出しを行う必要があるときは必ず、すべての引数を Variant 型として渡す必要があります。 たとえば、次のコードではこのエラーが発生します。
Dim MyForm As Object ' Because MyForm is Object, binding is late. Set MyForm = New Form1 Dim StringArray(10) As String * 12 ' The next line generates the error. MyForm.MyProc StringArray
文字列配列については、ループを使用して、配列の個別の各メンバーを、可変長文字列の一時配列に割り当てます。 その後、その配列を Variant に割り当てて、プロシージャに渡すことができます。 ユーザー定義型の配列については、Array 関数を使用して、ユーザー定義型の変数の個別の要素を Variant に割り当てることができます。 これにより、バリアントの配列が含まれる Variant が作成されます。 バリアントのこの配列における各要素の VarType は、ユーザー定義型の各要素の元の型に対応します。
詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示