ちょこっとVBA

new.png

いじってみました。

 

せっかくなので、自分の資産として汎用的に作っていきたいなぁと思い、クラスモジュールとやらで何か作ろうとしていたところで、思わぬことにはまりました。

 

クラスのインスタンス化ができない

こんな基本的な事ではまるとは思っていませんでした。

何せ、どう調べても書き方自体は間違っていなさそうなのに、下記のようなエラーメッセージが表示されてしまうのです。

 

newキーワードの使用法が不正です。

 

なんじゃそりゃですよね。

どうやってもこのエラーで止まる。




















 

 

その後、色々調べたり試してみたりして、分かった事を書き綴っておこうと思います。

 

結論

定義してあるクラスのプロジェクト内からでないとクラスのインスタンス化ができない?!

今はまだ裏付けがとれたわけでもなく、結果論なのですが、VBAのプロジェクト内に実装したクラスを、他のプロジェクト(新規Book)で変数を宣言まではできるが、インスタンス化ができません。

 

対処方法

で、どうやって解決できたかというと、定義してあるクラスのプロジェクト内の標準モジュールに、クラスのインスタンス化を行い、そいつを渡す関数を作っておけばいいみたいです。

 

 


















 

プロジェクトのプロパティ

 

新規Book内で、「Operation」クラスを呼ぶ際に、下記のように記述すればOK。

 




















 

参考URL:

http://hevyhand.sakura.ne.jp/dokuwiki/doku.php?id=howto:excel:%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E7%94%9F%E6%88%90%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です