• ベストアンサー

userformの表示位置について

userformを表示し、 マウスで位置を動かし、その位置を調べてプロパティ(top,left)を変更しています。 そしていったんunloadして、再度表示すると、 変更したプロパティが最初に戻ってしまっています。 コレはどうすることも出来ないのでしょうか。 移動させた位置を別保存し、 次回のshow時にそれを読み込むことでは解決できますが、 プロパティーを変更したときの値を保存しておく(初期化させない)ことがやりたいのですが。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

QueryCloseイベントを使いユーザー フォームが閉じる前に 位置を変数に格納してやれば Public myLeft As Single Public myTop As Single 標準モジュール Sub ユーザーフォーム表示()   With UserForm1     If myLeft = 0 Or myTop = 0 Then       .StartUpPosition = 1     Else       .StartUpPosition = 0       .Left = myLeft       .Top = myTop     End If     .Show   End With End Sub ユーザーフォームモジュール Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)   myLeft = Me.Left   myTop = Me.Top End Sub

nagahaha
質問者

お礼

早速有り難うございます。 言葉足らずで失礼しました。 >そしていったんunloadして、再度表示すると、  とは、「ブックを閉じて」ということです。 ブックを閉じずにshowを繰り返す場合は問題なく位置が動いて表示されます。 ブックをいったん閉じてしまうとブックを保存しても元に戻ってしまう、 ということです。 お教えいただいたやり方は、 >移動させた位置を別保存し、 >次回のshow時にそれを読み込むことでは解決できますが、 で書いたことです。 プロパティが変更されているのに保存しても初期値に戻るということは、 プロパティの保存が出来ないということなのでしょうか。 プロパティの保存が出来れば解決すると思うのですが。

nagahaha
質問者

補足

H/Pを探していて回答を見つけました。 「.FRX」なるファイルが存在するみたいです。 コレが、手動で変更されたプロパティを保存すると。 ということで、excelvbaで設定された内容は無理みたいですね。 中身を調べて、このファイルをいじってやれば出来なくはないでしょうが、 それなら私が現在やっている方法と同じだし、もっと複雑になりますので。 ということで諦めました。 お世話になりました。

関連するQ&A