日記/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
基本的な流れは、
- FindWindow()/GetActiveWindow()でUserFormのウインドウハンドルを取得。
- GetWindowLong(hWnd, GWL_STYLE)でウインドウのスタイルを取得。
- 上で取得した値に、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