プライベートオブジェクトモジュールとパブリックオブジェクトモジュールのエラーを解決するには?

解決


へむ  2001-11-17 20:31:46  No: 103787  IP: [192.*.*.*]

AD,DAボードを利用して、VBで制御しようとしています。
プログラムを実行中のエラーで
  
    「プライベートオブジェクトモジュールを、
    パブリックオブジェクトモジュール内でパブリックプローシジャの
    引数または戻り値、パブリックデータメンバ、またはパブリックの
    ユーザー定義型のフィールドとして、使用することはできません。」

というエラーが出たのですが、どういうことなのでしょうか?
よろしくお願いします。

編集 削除
たかみちえ  2001-11-18 01:11:27  No: 103788  IP: [192.*.*.*]

このエラーは見たことあります。

  関数の中に、引数や戻り値として、
Private Enum,Private Const,Private Type,Private Decleareのどれかが入っていませんか?

  これは、エラーが言うとおりに、Privateで宣言されてる型とかを、
Public Subとかで引数などに使うことはできないですよということです。
だって、Privateで宣言されてるものは、外のフォームモジュールとかからは見えないことになっているので、
それを外からも見える関数の引数とかに指定するのは、ヘンですものね。

  エラーが起こったときに、その箇所が選択されると思いますけど、
そこのあたりを変えてみたらなおると思いますよ、
AD.DAがどうののエラーだったらわたしにはどうしようもできませんけど…。

編集 削除
NM  2001-11-19 17:37:58  No: 103789  IP: [192.*.*.*]

Formモジュールのコード内のプロシージャ間で、構造体を引数にしていませんか?

編集 削除
へむ  2001-11-19 21:33:28  No: 103790  IP: [192.*.*.*]

確かに、構造体を引数にしています。
実行すると、
  「コンパイルエラー
    パブリックオブジェクトモジュールで定義された
    ユーザー定義型に限り、変数に割り当てることができ、
    実行時バインディングの関数を渡すことができます。」
と出て、引数がマークされるんですが…。

編集 削除
たかみちえ  2001-11-20 00:01:31  No: 103791  IP: [192.*.*.*]

その構造体がおなじモジュールの中(別に標準モジュールなら、どこでもいいとは思いますけど…)なら、
Public  で構造体が宣言されてないから、よそから参照できないんだと思います。

  フォームモジュールとかに書かれてる構造体は、標準モジュールからは見えません。
その場合は構造体を標準モジュールに移動してあげればいいと思います。
だいたい階段で表すとこんな感じ…?

  フォームモジュール┐
                    │┌クラスモジュール
                標準モジュール

  上のほうから下で宣言されてる内容はわかるので、(隠されてる場合を除き)
上で下のコードで宣言されてる構造体の内容とかは扱えますけど、
下から上は見えないので、つまりフォームモジュールでの宣言内容は、標準モジュールではわかりません。

編集 削除
へむ  2001-11-24 18:33:53  No: 103792  IP: [192.*.*.*]

無事解決しました。
構造体と標準モジュールの関係が
今一つ理解不足でした。
NMさん、たかみちえさんありがとうございます。

編集 削除