我的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
答案 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
}
答案 4 :(得分:0)
我有类似的问题。对我唯一有效的方法是进入Excel的“高级选项”,然后选中“禁用硬件图形加速”框。我浪费了几个小时试图找到这个。我希望这对其他人有帮助!