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

解決


へむ  2001-11-18 05:31:46  No: 103787

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

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


たかみちえ  2001-11-18 10:11:27  No: 103788

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

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

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

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


NM  2001-11-20 02:37:58  No: 103789

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


へむ  2001-11-20 06:33:28  No: 103790

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


たかみちえ  2001-11-20 09:01:31  No: 103791

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

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

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

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


へむ  2001-11-25 03:33:53  No: 103792

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加