专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
今天看啥  ›  专栏  ›  完美Excel

VBA:创建可调整大小的用户窗体

完美Excel  · 公众号  · Excel  · 2024-09-18 06:20

主要观点总结

文章介绍了如何在Excel VBA中为用户窗体添加调整大小功能,包括类模块的创建和控件随窗体大小变化的实现。

关键观点总结

关键观点1: 类模块clUserFormResizer的作用

通过插入类模块并编写代码,实现用户窗体的拖动调整大小功能。

关键观点2: 如何设置用户窗体的大小调整

在用户窗体代码模块中添加变量,并在UserForm_Initialize事件中初始化类模块,设置ResizableForm属性为用户窗体本身。

关键观点3: 控件随窗体大小变化的实现

在Resizing事件中,通过调整控件的Left和Top属性,使列表框和关闭按钮随着窗体的大小变化而移动。

关键观点4: 解决窗体调整时出现的问题

在调整大小时,可能会出现按钮部分在用户窗体其他位置保持可见或有延缓的情况,此时可以添加Me.Repaint到Resizing事件中解决。


文章预览

‍ ‍ 学习Excel技术,关注微信公众号: excelperfect 标签: VBA , 用户窗体 使用 VBA ,能够通过拖动用户窗体右下角或边框来放大或缩小用户窗体。如下图 1 所示。 图 1 在 VBE 中,插入一个类模块,将其重命名为 clUserFormResizer 的类模块,并在其中输入下面的代码: Private WithEvents frmResizableForm As MSForms.UserForm Private oResizableForm As Object Private WithEvents frResizerCorner As MSForms.Frame Private WithEvents frResizerRight As MSForms.Frame Private WithEvents frResizerBottom As MSForms.Frame Private sngMinHeight As Single Private sngMinWidth As Single Private sngMouseX As Single Private sngMouseY As Single Event Resizing(ByVal X As Single, ByVal Y As Single) Friend Property Set ResizableForm(ByRef oFrm As Object ) Set frmResizableForm = oFrm Set oResizableForm = oFrm    If  sngMinHeight =  0   Or  sngMinHeight > oResizableForm.Height  Then ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览