如何防止Excel UserForm自动缩小/扩展?

Phy*_*o11 5 excel vba userform

我的 Excel 用户窗体包含各种对象,包括文本框、组合框、单选按钮等。当我的笔记本电脑位于扩展坞上并且 VBA 窗口在较大的显示器上打开时,用户窗体和用户窗体上的对象会收缩和展开。

当我从 VBA 中的“表单”选项卡访问用户窗体编辑器时,我可以拖动用户窗体调整大小手柄,用户窗体中的对象将立即恢复到其原始状态,但我想以编程方式执行此操作,以便最终用户不会处理缩小/扩展的用户表单。

我尝试在打开时调整用户窗体的大小(UserForm_Initialize),但似乎收缩/扩展是在用户窗体未处于活动状态时发生的,这意味着我的用户窗体大小调整仅用于将用户窗体返回到其收缩/扩展状态,而不是其状态原始状态。

Sub UserForm_Initialize()

 Call ResizeUserform(Me)

End Sub

Sub ResizeUserform(UserForm_Name As Object)

 UserForm_Name.Width = UserForm_Name.Width + 0.001
 UserForm_Name.Width = UserForm_Name.Width - 0.001

 UserForm_Name.Height = UserForm_Name.Height + 0.001
 UserForm_Name.Height = UserForm_Name.Height - 0.001

End Sub
Run Code Online (Sandbox Code Playgroud)

Jav*_*omo 4

不要让表单的尺寸含糊不清或容易出现逻辑循环(即作为其自身的函数);在加载/显示之前设置它们。

IE:

   'where XX and YY are integer constants:
   With YourFormName
        .width=XX
        .height=YY
        .show
    end with
Run Code Online (Sandbox Code Playgroud)

如果您绝对需要引发循环语句,请通过将计算变量存储在全局/局部变量中来间接执行此操作,然后继续声明其属性(即 YourFormName.width=variable)

祝你好运!。

  • 这最终成为我尝试过的所有解决方案中最好的(也是最简单的)。对于每个用户窗体,我在 UserForm_Initialize 例程的开头对高度和宽度进行硬编码。这适用于具有不同分辨率的不同显示器。 (2认同)