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

时间:2019-06-06 19:31:54

标签: excel vba userform

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

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

我已经尝试在打开(UserForm_Initialize)时调整UserForm的大小,但是好像在UserForm处于不活动状态时进行缩小/扩展,这意味着我的UserForm调整大小仅是为了使UserForm返回其收缩/扩展状态而不是它的原始状态。

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

5 个答案:

答案 0 :(得分:2)

不要让表单的尺寸含糊不清或容易出现逻辑上的循环性(即,取决于其自身);在加载/显示之前进行设置。

即:

   'where XX and YY are integer constants:
   With YourFormName
        .width=XX
        .height=YY
        .show
    end with

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

祝你好运!。

答案 1 :(得分:0)

不要使表格最大化。 “最大化”表示您 在设计时不知道表单的大小,因为要根据表单显示的监视器大小来确定表单的大小。

较大的监视器=较大的最大化形式,这是设计使然。

如果您不希望表单在其他尺寸的监视器中显示时自动调整大小,请不要将其最大化。


或者,处理表单的Resize事件,并以编程方式将每个控件移至需要相对于右下边缘的位置。请注意,这是编写棘手且非常烦人的代码,尤其是在表单非常复杂的情况下。没有最大化的形式要简单得多。

答案 2 :(得分:0)

我有一个类似的问题,每次程序打开Login用户表单的时间都小于上一次。它只有在我的笔记本电脑上才配备了额外的显示器。我终于使用了Private Sub UserForm_Initialize()    使用用户表格       .Width = Application.Width * 0.3       .Height = Application.Height * 0.6
   结束于 结束子 在用户表单代码中,它已经停止,这意味着它不再向用户显示更改,但是如果我打开VBA,它已更改了Height和Width的大小,但是由于它只是在VBA中,因此用户不必尝试然后在一个迷你框中输入密码即可。

答案 3 :(得分:0)

此操作也可以通过循环完成。我使用按钮来增加和减少用户窗体的高度。我创建了一个循环并将其分配给按钮,同时有一个不错的动画。 设置一个高度值,当按下按钮时,如果高度小于此值,则用户窗体将变长,而如​​果高度大于此值,则用户窗体将变短。 代码:

// arr: [Food]
let filteredFood = arr.filter { food -> Bool in
    var bool = false
    food.content?.forEach { $0.items?.forEach({ foodItem in
        bool = foodItem.title != nil && foodItem.summary != nil && foodItem.image != nil
    })}
    return bool
}

这是视频:https://www.youtube.com/watch?v=1LCxgQGy9tU

Source and Example file here

答案 4 :(得分:0)

我有类似的问题。对我唯一有效的方法是进入Excel的“高级选项”,然后选中“禁用硬件图形加速”框。我浪费了几个小时试图找到这个。我希望这对其他人有帮助!