|
楼主 |
发表于 2018-2-5 11:21
|
显示全部楼层
改变窗体的大小,可以使用其Width和Height属性来完成。
所以,让窗体的大小适应单元格区域的大小,只需要先计算出这个单元格区域的大小即可。
为了后面便于应用,我们让Sub过程也像Function过程一样带有一个参数,其类型为Range
首先,从最简单的方式开始,选择一个“固定靶”,就定为单元格区域“A1:E5”吧。
代码如下:
- Private Sub UserFormFitRange(ByVal oRng As Range)
- Dim lft, tp, rght, btn, wd, ht
- With oRng
- .Parent.Parent.Windows(1).Zoom = 100
- lft = .Cells(1).Left
- tp = .Cells(1).Top
- rght = .Cells(1, .Columns.Count).Left + .Cells(1, .Columns.Count).Width
- btn = .Cells(.Rows.Count, 1).Top + .Cells(.Rows.Count, 1).Height
- wd = rght - lft
- ht = btn - tp
- End With
-
- Unload UserForm1 '此步骤使窗体在下次显示时恢复默认风格,以便能够用鼠标来移动它。
- '否则,如果窗体已经设为鼠标穿透的话,就不能用鼠标来移动它了
-
- With UserForm1
- .Width = wd
- .Height = ht
- .Show 0
- End With
- End Sub
- Private Sub UserFormFightRangeSelection()
- With Application.ActiveWindow
- UserFormFitRange .RangeSelection.Areas(1)
- End With
- End Sub
- Sub UserformFitA1E5()
- Range("A1:E5").Activate
- UserFormFightRangeSelection
- End Sub
复制代码 运行宏 UserformFitA1E5,可以看到,窗体显示在EXCEL窗口的中心,而其大小,已经变成单元格区域“A1:E5"的大小了。这可以通过把窗体移动到单元格区域A1:E5来直观地得到验证,如下面的两张图片所示:
第一张图,是窗体显示出来时的状态
第二张图,是在手动把它移动到A1:E5区域后的状态。
|
|