【Excel VBA】

標準モジュール内に作成したユーザ定義型を
同モジュールのプロシージャや関数の引数として渡すとエラーとなってしまいます。
エラーの内容
「コンパイルエラー<改行>パブリックオブジェクトモジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことが出来ます。」

クラスモジュールを作成し、
Web上で見かけた書き方を真似して同様のものを作ったところ正常に動きましたが、
①標準モジュール内に作成したユーザ定義型を同モジュールのプロシージャや関数の引数として渡すことは不可能なのでしょうか?
②クラスモジュール内で何かしらを作成しなければならないのでしょうか?
③クラスモジュール内でユーザー定義型などを作成するに当たって参考になるサイトを教えてください。(一応は動いていますが、クラスモジュールの書き方など正しいとは思えませんので)

上記の質問のうちどれか一つ以上お答えください。

よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/10/07 01:27:06
  • 終了:2006/10/07 02:09:24

ベストアンサー

id:KirakiraHikaru No.1

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/10/07 02:00:00

ポイント500pt

標準モジュール内に作成したユーザ定義を

同モジュールの関数の引数に利用することは可能です。

下記の構造体の利用は参考になりませんでしょうか?

http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/VBALEC/arg.htm


ただし、VBAの制約でByRef型でないと渡すことができないようです。

(VBだと可能なのですが・・・)

id:Nigitama

KirakiraHikaruさん

いつもありがとうございます。

また助けていただきました。

受け取り側で

xxxx(yyy As 定義型)

の「定義型」と書き忘れていただけのようです。

チェックが甘かったです・・・

精進が足りないようです。

2006/10/07 02:09:01
  • id:Nigitama
    質問の補足

    「正常に動いた」とは、
    クラスモジュール内で作成したユーザー定義型(のようなもの)を正常に引数として渡すことが出来た。
    という意味です。
  • id:KirakiraHikaru
    標準モジュール内に作成したユーザ定義を
    同モジュールの関数の引数に利用することは可能です。
    下記の構造体の利用は参考になりませんでしょうか?
    http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/VBALEC/arg.htm
  • id:Nigitama
    KirakiraHikaruさん
    解答欄にもう一度同じお答えをコピペしていただけないでしょうか?
  • id:KirakiraHikaru
    この回答内容でこんなにポイントを頂いてなんだか恐縮です。
    VBAはデバッガが不親切なのでそういうミスを起こしやすいですよね。
    VB2005ならかなり親切なので書き損じることもないんですけどね。
    解消されないバグを悩みながらVBAをやっていた頃を思い出しました。
  • id:Nigitama
    確かに今回は私のケアレスミスでしたが、
    これに気がつかなければ何時間もドツボにはまっていたことでしょう。

    エクセルVBAの構造体(ユーザー定義型)はWeb上で情報が乏しく、探しにくい上、
    迅速、正確な解答をしていただいたということでの今回のポイントにさせていただきました。

    あとは今までの分も気持ち入っています。

    今後も分からないときはお願いします。
  • id:Nigitama
    訂正

    ×これに気がつかなければ何時間もドツボにはまっていたことでしょう。

    ○現に何時間もドツボにはまって、クラスモジュールをせっせと書いていました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません