[英]Moving controls inside a zoomed frame on an Excel Userform
我有Userform1,其大小適合在2560 x 1440的監視器中全屏顯示。Userform1包含FrameA,其.Width也是2560,並縮放到10%。
FrameA包含一個子FrameB,其子.Width為8000,其.Left為1000(在FrameA縮放坐標中)。 FrameB在屏幕上完全可見。
我想將FrameB向右移動,使其右邊緣位於監視器的右邊緣。 有人可以告訴我這樣做的算法嗎?
我不記得每個人都很難在表單上找到自己想要的樣子。
我最終搬了很多東西,也許不需要搬。 但是,我終於獲得了我相信您所尋求的效果,因此我沒有嘗試將代碼移回原來的位置。
第一個關鍵更改似乎是:
Property StartUpPosition of UserForm1 = 0 - Manual`
沒有這個,我將無法將表單的高度設置為最大可用高度。 設置.Top無效。
第二個關鍵更改似乎是使用:
Application.DisplayFullScreen = True
我不記得之前需要此命令,但最大化窗口狀態將無法提供完整的屏幕高度。
我放棄了Sub maximizeWindows()
例程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
以上對我的影響是:
希望這對您有用。
我終於找到了解決方法。
為了簡單地說明問題並簡化一下:Frame2完全包含在縮放的Frame1中,並且需要向右移動,以便其右側與Frame1的右側齊平。 Frame2的左側應移到哪里?
Sub move_Frame2_Hard_Right_Inside_Frame1()
Dim zoomPct!
zoomPct! = Frame1.Zoom / 100
Frame2.Left = Frame1.Width / zoomPct! - Frame2.Width
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.