繁体   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