home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

日記/2009/01/05/ExcelVBAでUserFormをリサイズ可能にする方法

日記/2009/01/05/ExcelVBAでUserFormをリサイズ可能にする方法

日記 / 2009 / 01 / 05 / ExcelVBAでUserFormをリサイズ可能にする方法
id: 145 所有者: msakamoto-sf    作成日: 2009-01-05 15:07:01
カテゴリ: Windows 

お手伝いで調査を頼まれて、無事見つかったのでメモ。

ExcelのVBAでUserFormを表示しているのだけれど、リサイズできなくて困ってるとのこと。
→Win32APIで解決。

・「エクセルでフォームを自在に作る方法」
http://questionbox.jp.msn.com/qa1258692.html

・「【36270】画面サイズ変更を実現させるには?」
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=36270;id=excel

・「UserForm Resize」
http://www.xtremevbtalk.com/archive/index.php/t-196301.html

基本的な流れは、

  1. FindWindow()/GetActiveWindow()でUserFormのウインドウハンドルを取得。
  2. GetWindowLong(hWnd, GWL_STYLE)でウインドウのスタイルを取得。
  3. 上で取得した値に、WS_THICKFRAMEをORしてSetWindowLongする。

ここまでできれば、UserForm_Resize()のイベントハンドラで色々好きなように調整できるようになります。
なおAPIを呼ぶタイミングは・・・

  • Initializeイベント:FindWindowでウインドウのCaptionから取得。
  • Activateイベント:GetActiveWindowで取得。

という使い分けになります。


プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2009-01-05 15:24:57
md5:eef741c01b3349da61dababe3ef18e95
sha1:b40653505fb016a6204fcab9b9602d300da1f11a
コメント
コメントを投稿するにはログインして下さい。