赞
踩
实例需求:工作表中有多个Button控件(工作表Form控件)和一个ScrollBar控件(工作表ActiveX控件,名称为ScrollBar2),需要实现如下图所示效果。点击ScrollBar控件实现按钮的滚动效果,实际工作表中Button控件个数不确定。
首先设置ScrollBar控件属性。
ScrollBar控件Change事件代码如下。
Private Sub ScrollBar2_Change() Dim btn As Button, i As Long, j As Long Dim iLoc As Long, iTop As Long, iVal As Long Const TOP_GAP = 10 Const BTN_GAP = 3 Application.ScreenUpdating = False iVal = Me.ScrollBar2.Value For i = 1 To Me.Buttons.Count If i > iVal Then If i = iVal + 1 Then iTop = TOP_GAP Else With Me.Buttons(i - 1) iTop = .Top + .Height + BTN_GAP End With End If Me.Buttons(i).Top = iTop End If Me.Buttons(i).Visible = (i > iVal) Next i Application.ScreenUpdating = True End Sub
【代码解析】
第4行代码设置常量TOP_GAP,为首个可见Button控件的上边距(控件上端与表格区域上边界的距离)。
第5行代码设置常量BTN_GAP,为两个相邻Button控件间的距离。
第6行代码禁止屏幕更新。
第7行代码获取ScrollBar控件的当前值(0~100)。
第8~20行代码循环处理工作表中的全部Button控件。
第9行代码判断Button控件编号是否大于ScrollBar控件的值。
例如ScrollBar控件的值为2,由于ScrollBar控件的步长设置1,说明用户点击两次下箭头,因此需要隐藏前两个Button控件,本示例中可见Button控件为第3个到第6个,下面代码实现这个效果。
第10行代码判断是否为当前变量Button控件是否个首个可见控件。
如果满足条件,第11行代码其上边距为TOP_GAP。
如果不满足条件,第13~15行代码根据其上一个可见控件的位置和控件尺寸(高度)计算上边距。如果所有Button控件都是相同尺寸,那么此处也可以直接计算每个控件的上边距。
第17行代码设置Button控件的Top属性。
第19行代码设置Button控件的Visible属性,隐藏无关控件。
第21行代码恢复屏幕更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。