私が欲しかった方法を見てフォームを手に入れることが大変なことを思い出しません。
私は、おそらく動かす必要のない多くのものを動かしてしまいました。しかし、私は最終的に私があなたが探していると信じている効果を得たので、コードを元の場所に戻そうとはしませんでした。
最初のキーの変更があるように思われる:
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の最大/標準/最小化状態は変更されませんでした。
これはうまくいきます。
Doe this help? 'A.Left + A.Width'はAの右境界を与えます。' A.Left = B.Right - A.Width'はAとBを右揃えにします。 –
それで、私の質問からの数字を使って、私は右にFrameBを動かすだろうか? – Roy
申し訳ありませんが、私はここで一日夢を見ています。 'A.Left = B.Right - A.Width'はB.Rightがないので意味がありません。私は 'A.Left =(B.Left + B.Width) - A.Width'と書くべきだった。また、私は自分のAsとBsをあなたの反対のものにしたと思う。あなたの質問の意義を誤解しない限り、FrameBの '.Left'を現在の画面に基づいて絶対値に設定しないでください。なぜなら後で別の画面でそれを使用するからです。 –