作成日 2004/11/3
最終更新日 2005/10/22

スケルトンコードの説明

えーと、クラスモジュールを作成して、プログラムを組みます。
初め、だるまは一からプログラムを作ったけど、それば面倒くさい。
なので、だるまが作ったクラス「clsSkeleton」に手を加えるかたちでクラスを作る事にします。
ここでは、その「clsSkeleton」クラスの説明をする。

1.とりあえず、「clsSkeleton」を使ってみる
2.オブジェクトの貼付け方
3.オブジェクトの解放の仕方
4.プロパティの実装方法
5.クラスの使い方
6.バグ情報と更新履歴

1.とりあえず、「clsSkeleton」を使ってみる

 とりあえず、ここ(ver1.1)をクリックして、ダウンロードして。

このページのトップへ

2.オブジェクトの貼付け方

確か、やりたい事は、複数のオブジェクトをまとめて扱いたいという事だった。
clsSkeletonクラスのソースを見ながら、下の文章を読んでほしい。
  1. まず、クラスモジュールの先頭で、貼付けるオブジェクト(まとめて扱いたいオブジェクト)を宣言する。
    ※宣言するとき、WithEventsを指定すると配列に出来なくなるので注意。かといって、WithEventsを指定しないと貼付けたオブジェクトの イベントプロシージャが作成できなくなる。

  2. 次に、Addメソッドをいじくる。
     Addメソッドの中で、引数ContainerClassObjectにフレームクラスのオブジェクトthisControlを貼付けているコードがあ ると思う。
     まとめて扱いたいオブジェクトは、下の図の様にthisControl(フレームクラスのオブジェクト)に貼付ける。
     Addメソッドの引数で渡されたContainerClassObjectに直接貼付けない。
    フレームに貼付ける
    オブジェクトの貼付け方
     一旦、コンテナオブジェクトにフレームを貼付け、そのフレームに
    まとめて扱いたいオブジェクトを貼付ける

     理由1:例えば、コントロールの位置が変わったときのプログラムが楽にできる。
     理由2:オブジェクトの削除処理が楽になる。
     理由3:他にも、だるまが知らない何かがあるかも。
     欠点1:透明なコントロールを作成できなくなる。
     欠点2:遅くなる。(オブジェクトの数が増えるから当たり前。)
このページのトップへ

3.オブジェクトの解放の仕方

 Deleteメソッドをいじくる。
 実際に、clsSkeletonクラスのソースを見ながら読んでくれ。
 まず、thisControlに貼付けたオブジェクトを削除する。
 そして、thisControlも削除する。
 その他の変数も削除、あるいは初期化する。
このページのトップへ

4.プロパティの実装方法

 モジュールレベルの変数をPublicで宣言する方法は簡単だけど、出来る事が限られる。
 なので、基本的には、Property Let(or Set)プロシージャとProperty Getプロシージャを使う。
 以下の事は、Property ...プロシージャを使わないと出来ない。
  1. あるプロパティの値が変更されたときに、何か処理をする
    (例えば、画面に表示されているインスタンスの色を変える。他のプロパティを変更する。)
  2. プロパティの値が設定されるときにエラー処理をする。
  3. プロパティを読み取り専用にする。
  4. 最初の一回だけ設定可能。
このページのトップへ

5.クラスの使い方

 UserForm1のソースを見てほしい。
  1. Userform1のモジュールの先頭でclsSkeletonクラス型の変数を宣言。
  2. UserFormのInitializeイベントで、クラスのインスタンス生成、Addメソッドの呼び出しをする。 
  3. 適当に使う。
  4. UserFormのTerminateイベントで、インスタンス削除。
    (注意:やらないとExcelが強制終了する可能性あり。)
このページのトップへ

6.バグ情報と更新履歴

 Addメソッドの引数に不正な値(例:Width=-10)を入れたとき、メソッドが失敗するが、このとき、コンテナオブジェクトに thisControlが残ったままになってしまう。しかも消せない。(ver1.0、2004/11/5)(ver1.1で修正しました。 2004/11/6)

Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。