次の方法で共有


ByRef 引数の型が一致しません

既定である ByRef (参照渡し) で渡された引数は、プロシージャで予期される正確なデータ型を持つ必要があります。 このエラーの原因と解決策は次のとおりです。

  • 予期される型を強制できない、ある型の引数を渡しました。

    たとえば、Long が必要なときに、Integer 変数を渡そうとした場合に、このエラーが発生します。 情報が失われても強制を必要とする場合、引数をそれ自体のカッコで囲んで渡すことができます。

    たとえば、 Variant 引数 MyVar を、 Integer 引数を予期するプロシージャに渡すとき、以下のように呼び出しを作成できます。

      Dim MyVar 
      MyVar = 3.1415 
      Call SomeSub((MyVar)) 
    
      Sub SomeSub (MyNum As Integer) 
      MyNum = MyNum + MyNum 
      End Sub
    

    引数をそれ自体のカッコで囲むことにより、としての評価を強制します。 この評価中に、数値の小数部分はそれを予期される引数の型に準拠するよう丸められます (切り捨てられることはありません)。 評価の結果は一時的な場所に配置され、一時的な場所への参照をプロシージャが受け取ります。 これにより、元の MyVar はその値を維持します。

    注:

    変数に対して型を指定しないと、その変数は既定の型である Variant になります。 これは常に明確とは限りません。 たとえば、次のコードでは 2 つの変数が宣言されていますが、1 つ目の MyVarVariant になり、2 つ目の AnotherVarInteger になります。

     Dim MyVar, AnotherVar As Integer 
    

詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。