AD,DAボードを利用して、VBで制御しようとしています。
プログラムを実行中のエラーで
「プライベートオブジェクトモジュールを、
パブリックオブジェクトモジュール内でパブリックプローシジャの
引数または戻り値、パブリックデータメンバ、またはパブリックの
ユーザー定義型のフィールドとして、使用することはできません。」
というエラーが出たのですが、どういうことなのでしょうか?
よろしくお願いします。
このエラーは見たことあります。
関数の中に、引数や戻り値として、
Private Enum,Private Const,Private Type,Private Decleareのどれかが入っていませんか?
これは、エラーが言うとおりに、Privateで宣言されてる型とかを、
Public Subとかで引数などに使うことはできないですよということです。
だって、Privateで宣言されてるものは、外のフォームモジュールとかからは見えないことになっているので、
それを外からも見える関数の引数とかに指定するのは、ヘンですものね。
エラーが起こったときに、その箇所が選択されると思いますけど、
そこのあたりを変えてみたらなおると思いますよ、
AD.DAがどうののエラーだったらわたしにはどうしようもできませんけど…。
Formモジュールのコード内のプロシージャ間で、構造体を引数にしていませんか?
確かに、構造体を引数にしています。
実行すると、
「コンパイルエラー
パブリックオブジェクトモジュールで定義された
ユーザー定義型に限り、変数に割り当てることができ、
実行時バインディングの関数を渡すことができます。」
と出て、引数がマークされるんですが…。
その構造体がおなじモジュールの中(別に標準モジュールなら、どこでもいいとは思いますけど…)なら、
Public で構造体が宣言されてないから、よそから参照できないんだと思います。
フォームモジュールとかに書かれてる構造体は、標準モジュールからは見えません。
その場合は構造体を標準モジュールに移動してあげればいいと思います。
だいたい階段で表すとこんな感じ…?
フォームモジュール┐
│┌クラスモジュール
標準モジュール
上のほうから下で宣言されてる内容はわかるので、(隠されてる場合を除き)
上で下のコードで宣言されてる構造体の内容とかは扱えますけど、
下から上は見えないので、つまりフォームモジュールでの宣言内容は、標準モジュールではわかりません。
無事解決しました。
構造体と標準モジュールの関係が
今一つ理解不足でした。
NMさん、たかみちえさんありがとうございます。
ツイート | ![]() |