2012-02-05 11 views
0

私は2560 x 1440のモニターでフルスクリーンに収まるサイズのUserform1を持っています。Userform1には、.Widthも2560で、10%に拡大されたFrameAが含まれています。Excelユーザーフォームのズームフレーム内のコントロールの移動

FrameAには、.Widthが8000、.Leftが1000の子FrameBが含まれます(FrameAズーム座標)。 FrameBは画面上に完全に表示されます。

フレームBの右端がモニタの右端にくるように、フレームBを右に移動したいとします。誰かが私にそれを行うための算術を表示できますか?

+0

Doe this help? 'A.Left + A.Width'はAの右境界を与えます。' A.Left = B.Right - A.Width'はAとBを右揃えにします。 –

+0

それで、私の質問からの数字を使って、私は右にFrameBを動かすだろうか? – Roy

+0

申し訳ありませんが、私はここで一日夢を見ています。 'A.Left = B.Right - A.Width'はB.Rightがないので意味がありません。私は 'A.Left =(B.Left + B.Width) - A.Width'と書くべきだった。また、私は自分のAsとBsをあなたの反対のものにしたと思う。あなたの質問の意義を誤解しない限り、FrameBの '.Left'を現在の画面に基づいて絶対値に設定しないでください。なぜなら後で別の画面でそれを使用するからです。 –

答えて

0

私はようやくそれを行う方法を見つけました。

Frame2はズームされたFrame1内に完全に含まれており、右端がFrame1の右側と一致するように右に移動する必要があります。フレーム2の左側をどこに移動する必要がありますか?

Sub move_Frame2_Hard_Right_Inside_Frame1() 
    Dim zoomPct! 
    zoomPct! = Frame1.Zoom/100 
    Frame2.Left = Frame1.Width/zoomPct! - Frame2.Width 
End Sub 
0

私が欲しかった方法を見てフォームを手に入れることが大変なことを思い出しません。

私は、おそらく動かす必要のない多くのものを動かしてしまいました。しかし、私は最終的に私があなたが探していると信じている効果を得たので、コードを元の場所に戻そうとはしませんでした。

最初のキーの変更があるように思われる:

Property StartUpPosition of UserForm1 = 0 - Manual` 

これなしで、私は完全な利用できる高さにフォームの高さを設定することができませんでした。 .Topを設定しても効果はありません。私は前にこのコマンドを必要とするが、フルスクリーンの高さを明らかにしなかったウィンドウの状態を最大化覚えていません

Application.DisplayFullScreen = True 

2番目のキーの変更は、の使用であると思われます。

Sub maximizeWindows()Sub UserForm_initialize()のルーチンを破棄しました。これは、処理が異なるか、コードを移動したためです。私はコードを元に戻すことができると確信していますが、私は試していません。

私は、次のイベントルーチンを使用して新しい制御cmdExit追加:

Private Sub cmdExit_Click() 
    Unload Me 
End Sub 

Sub runDemo()はなっています:

Sub runDemo() 

    Application.DisplayFullScreen = True 

    Load UserForm1 
    With UserForm1 
    .Top = 2 
    .Left = 0 
    .Width = Application.UsableWidth 
    .Height = Application.UsableHeight - 2 
    .Frame1.Move 0, 0, .InsideWidth, 300 
    .Frame2.Left = .Frame1.Left + .Frame1.InsideWidth - .Frame2.InsideWidth 
    .Show 
    End With 

    Application.DisplayFullScreen = False 

End Sub 

上記の効果私のためにした

  • のUserForm1 Windowsのタスクバーから離れて画面全体を占めていました。
  • フレーム1は画面の全幅を占め、300の高さを有していた。
  • フレーム2はフレーム1に右揃えされていた。
  • Excelの最大/標準/最小化状態は変更されませんでした。

これはうまくいきます。

+0

Tony、私はあなたの努力に感謝します。しかし、私のコメントで述べたように、あなたは依然として親フレームのズーム状態を完全に無視しています。質問のタイトルに示されているように、この質問の中心にあるズームされた親フレームですが、回答を拡大するための参照はなく、サンプルWkbから親フレームのズームプロパティを実際に削除しました。 Frame1のズームを10%に戻してからコードを試してください。 – Roy

+0

Zoomは単にFrame2のサイズを縮小します。 Frame1には明らかな影響はありません。あなたはこの初期設定の終わりに画面をどのように見せたいのですか? –

関連する問題