VBA 用户窗体 - 浮动框架 - 每次移动鼠标或滚动时移动框架对象

VBA Userform - floating frame - move frame object with each movement of mouse or scroll

我有一个用户窗体,框架内有按钮,用于保存工作簿和缩放 in/out。这个框架目前位于用户窗体的底部,但我试图做的是在窗体的左侧有一个浮动框架。

框架的 'left' 位置将固定,但当用户向上或向下滚动表单时,框架将继续保持在相同的 'top' 位置。

初始化用户窗体时,我有以下代码:

.Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height)

我将框架的这段代码放入了各种 MouseMove 和 Scroll 操作中,但是一旦框架在第一个实例中就位,它就不会移动框架。

感谢任何帮助,我知道这对最终用户来说可能是不可能的或不是有效的解决方案。谢谢

问题是 Excel 是基于事件的。如果你想在表单中的某个位置有一个浮动框架,你需要捕获所有可能发生的事件,并可能将 "floating" 框架从你想要的位置移动。之后,您需要调整框架在表单中的位置,产生浮动的错觉 - 事实上 - 每次表单更改或滚动时,框架都会在表单中重新对齐。

这可能有点难以实现,并且会生成大量代码。但也许另一种解决方案是同时打开并向用户显示多个表单? "floating" 框架可以是您放置在 Excel 左上角的一种形式,另一种形式显示在 Excel 的中心。根据用户的某些事件和操作,这可能会对 form1、form2 或基础 Excel 工作簿(如您认为合适)产生影响。

要在 Excel 中使用多个表单,只需使用选项 Modal = false 向用户显示表单即可。

UserForm1.Show(false)    
UserForm2.Show(false)

希望对您有所帮助。