[[20051013190211]] 『ユーザフォームの位置』(岡) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザフォームの位置』(岡)

こんばんわ岡です
マクロでユーザフォーム立ち上げるようにしたのですが
ど真ん中に表示するところを右端に設定したいんです。
よろしくお願いします。

 XP 2002


 UserForm のプロパティのStartUpPositionを手動にして、LeftおよびTopの位置を変えてみてはどうでしょうか?

 (ken)


オーナーフォームの中央とはフォームがいくつかあるときフォーム1の中心にって事ですか?
高さと横を指定するときなんですけど
エクセルの画面の幅ってどこで調べればよいでしょうか?
例えば画面が高さ300×幅250みたいに・・・分かると設定しやすいのですが・・・
自分的には右端高さ真中にしたぃです。

 (MSE)
 横から失礼します。
 エクセル画面の高さは Application.Height
 エクセル画面の幅はApplication.Width で、取得できますよ。
 ユーザーフォームを右端真ん中に表示したいなら
 フォームのActivateイベントに

 Private Sub UserForm_Activate()
 Me.Left = Application.Left + Application.Width - Me.Width
 Me.Top = Application.Top + (Application.Height - Me.Height) / 2
 End Sub

 とすれば、良いかと思います。


できました。
ありがとうございます。
右中央にユーザフォーム行く前に真中にあるんです。その後今回の処理で
一瞬にして右に飛ぶわけですが、
ユーザフォームって自分が好きな位置に置いておくと次からその位置で始まるとか
ありませんでしたか??

(MSE)
 >ユーザフォームって自分が好きな位置に置いておくと
 >次からその位置で始まるとかありませんでしたか??

 それが、kenさんのおっしゃっている方法です。
 ブロパティウィンドウの
 StartUpPosition を 0-Manual にして、
 Left と Top を設定します。
 具体的な数値は環境により、違いますが、
 私のPCではLeftを530、Topを200程度にすると、
 フォームが画面の右端中央に表示されます。
 ただし、Application.Windowの大きさにかかわらず、
 いつも同じ位置に表示されますけど。

 単にイベントの違いなのでは?
 ブロパティで設定するのとInitializeで設定するのは
 同じことなので、こちらのイベントにしてみては?
  (INA)


 みなみなさまどうもありがとうございます。
 >単にイベントの違いなのでは?
 とはどういうことでしょうか??

 Activateイベント  
 Activate イベントは、オブジェクトがアクティブ ウィンドウになったときに
 発生します。

 Initialize イベント
 オブジェクトが読み込まれたあとで、そのオブジェクトが表示される前に発生します。

 ブロパティウィンドウで設定したものは、Initialize イベントで呼び出されるのと同じです。
  (INA)  


自分のしたい形にうまく設定することが出来ました。

ありがとうございました


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.