• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザーコントロールのメソッドにクラスの配列を渡すとエラーが)

ユーザーコントロールのエラー:ByRef引数の型が一致しません。

このQ&Aのポイント
  • ユーザーコントロールのメソッドにクラスの配列を渡すと、コンパイルエラーが発生します。
  • 原因として、ByRef引数の型が一致しないためです。
  • 対処方法を見つけるために、ユーザーコントロールとクラスの関連を確認してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

当方、暇になったので確認してみました。 ユーザー定義のクラスやコントロールのメソッドに、ユーザー定義のクラス、構造体、コントロールまたはその配列を渡せない場合があるというのは、前から知っていたのですが、どういう場合に当てはまるのかは、ちょっとよくわかりません。 解決策というか逃げですが、 'MyUserControl内 Public Sub F(args As Variant) Dim arg() As MyClass arg = args End Sub とすると、一度バリアント型に変換されるので、ワンテンポ遅れますが、その後の操作に支障はありません。 おそらくVB7では解決されていることだと思うのですが、VB6でも構文上間違っていないので、仕様なのかもしれません。 あまりお役に立てませんでした、すみません。

minimum
質問者

お礼

ありがとうございます。 うまく動きました このメンバ関数は初期処理の関数なのでちょっと位時間がかかっても問題無いんです。 それにしても、仕様ですか…さすがはマイクロソフト…

その他の回答 (1)

  • haporun
  • ベストアンサー率40% (230/562)
回答No.1

確認事項 ○ MyUserControl1はちゃんとForm1内に貼り付けられているか ○ いずれかのコントロールまたはクラスをインポートまたはエクスポートしようとしていないか ○ MyUserControl.Fメソッドの中には本当に何もコードはないのか ○ ツール→オプション→エラートラップをクラスモジュールで中断から、エラー発生時に中断に変えてみると、どこでエラーで止まるか

minimum
質問者

補足

○ MyUserControl1はちゃんとForm1内に貼り付けられているか くっついてます。 ○ いずれかのコントロールまたはクラスをインポートまたはエクスポートしようとしていないか 特に変わったことはしてないと思います。新たに標準EXEでプロジェクトを作り、クラスモジュールとユーザーコントロールを追加してFormにMyUserControl1を貼り付け上記のコードを記述しただけでもエラーが発生してしまいます。 ○ MyUserControl.Fメソッドの中には本当に何もコードはないのか 全部消しました。 ○ ツール→オプション→エラートラップをクラスモジュールで中断から、エラー発生時に中断に変えてみると、どこでエラーで止まるか 「Private Sub Fome_Load()」が黄色で反転していて、「MyUserControl1.F clss」の「clss」の部分が青で反転し、同じエラー内容で止まりました。

関連するQ&A