2006/4/16エクセルVBAで最小化ボタンを作る。ここではフォームの高さを小さくするボタン(※1)を作ろうと思います。(※2)※1:カラーボタンやカラーパレットでは、複数のコントロールを1つのコントロールとして扱いたいのでクラスモジュールを使用してきましたが、このボタンはそうではありません。クラス化しなくていいのかというと、そんな事はないです。クラス化する事によって、再利用が可能となるからです。※2:なんで、こんなの、作ったのかって?欲しいから。1.具体的にどんなのものを作るの?2.クラスの説明3.ダウンロードして使ってみる1.具体的にどんなのものを作るの?図1を見て。最小化ボタン「たたむ」ボタンをクリックすると、今現在のフォームの高さを記憶した後、高さを小さくします。「広げる」ボタンをクリックすると、フォームの高さを戻します。※ボタンをクリックするとフォームのResizeイベント(ボタンをフレームに貼付けた場合はLayoutイベント)が発生します。主なプロパティは以下の通りプロパティ名プロパティの説明State今、フォーム(正確にはボタンを貼付けたコンテナ)が折り畳まれている状態かどうか。(読み取り専用)0:折り畳まれていない1:折り畳まれているHeightボタンの高さ(面倒くさかったので読み取り専用)Widthボタンの幅(面倒くさかったので読み取り専用)Captionボタンに表示されている文字列(読み取り専用)"たたむ"か"広げる"のどっちか。Topボタンの左上のy座標(※1)Leftボタンの左上のx座標(※1)Enabledボタンが押下可能かどうか。(add時はTrue(押下可能)。)Visibleボタンの表示状態。(add時はTrue(表示状態)。)※1:ボタンの位置(TopとLeft)ですが、add時はフォーム(正確にはボタンを貼付けたコンテナ)の右上です。add後にコンテナの大きさが変わっても、ボタンの位置(TopとLeft)は変わりません。(※2)※2:え、コンテナの大きさが変わったときに、なんでTopとLeftの値を自動で変更するようにしないのかだって?答えは「できないから。97(※Windows版です。2003(※Windows版です。MSForms.Userformと宣言すれば、クラスモジュールでコンテナオブジェクトであるユーザフォームのイベントを処理できるはずです。ここで宣言したオブジェクト変数m_objFormにUserformオブジェクトへの参照を代入しようとしたときに、430番の実行時エラーが発生してしまいます。作成するメソッドは以下の通りメソッド名メソッドの説明Add最小化ボタンをコンテナオブジェクトに貼付ける。※既に貼付けていた場合や、引数が不正だった場合はエラーとし、貼付けはしない。Delete最小化ボタンをコンテナオブジェクトから削除する。※既に削除済みの場合は何もしない。このページのトップへ3.ダウンロードして使ってみるマクロ(ver.1.1)読み取り専用のプロパティがありますが、暇があったら(というより必要が出てきたら)設定も出来るようにします。このページのトップへこのページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。Corporationの米国およびその他の国における登録商標または商標です。VBAと表記する場合があります。Computer,Inc.の登録商標または商標です。その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。このホームページの作成者はこれらの会社とはいっさい関係がありません。