簡體   English   中英

在Excel用戶窗體上的縮放框中移動控件

[英]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

以上對我的影響是:

  • UserForm1占據了整個屏幕,底部沒有Windows任務欄。
  • Frame1位於頂部,占據了屏幕的整個寬度,高度為300。
  • 框架2與框架1右對齊。
  • Excel的最大化/正常/最小化狀態未更改。

希望這對您有用。

我終於找到了解決方法。

為了簡單地說明問題並簡化一下: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM