文/江觅
动态添加按钮,有时在vba编程中运用很多,也是一个比较容易实现的过程。
这里写了一个很小的例子,做个示范,动态添加按钮,而且按钮数量不限,可批量添加,位置、大小、按钮Caption自定义。如果对代码不很熟悉,套用也较方便。
动态效果图,文章结尾有代码,可以参考使用按钮文本用一个数组来定义,可以修改数组值来改变按钮Caption,很方便。按钮上边距可以自己设定,示例里面40和20两种,调用的时候设定高度值就行,也做了自定义。
对比新建和横向排列就会看到高度变化,这个在函数入口可以自己设置,没什么奇怪的。
竖向排列按钮也一样,位置可修改。
实际上做这个功能也没什么意义,就是说,只会这一个添加按钮和位置调整也没有真正实现按钮的功能。需要对按钮事件添加之后才显示出按钮的作用,所以,这个只能作为按钮功能第一步要做的事情,接下来,把按钮事件添加进去,这样就完整了。不知道,大家有没有高手!
添加按钮函数newAddCom(tempForm As msforms.UserForm, bArr, Topi As Integer, Lefti As Integer, P As Boolean)
变量说明:
tempForm:窗体对象
bArr:按钮Caption数组
Topi:上边距
Lefti:左边距
P:横向排列-True,竖向排列-False
函数代码Function newAddCom(tempForm As msforms.UserForm, bArr, Topi As Integer, Lefti As Integer, P As Boolean)
Dim i As Integer
Dim iX As Integer
iX = UBound(bArr)
Dim bObj As msforms.CommandButton
For i = 0 To iX
Set bObj = tempForm.Controls.Add("Forms.CommandButton.1", bArr(i))
With bObj
.Width = 100
.Height = 25
.Caption = bArr(i)
If P Then
.Top = Topi
.Left = .Width * i Lefti
Else
.Top = .Height * i Topi
.Left = Lefti
End If
End With
Next i
End Function
按钮数组过程
Public bArr() as variant
Sub setArr()
bArr = Array("按钮一", "按钮二", "按钮三", "按钮四", "按钮五")
End Sub
调用方法
Call newAddCom(Me, bArr, 10, 20, True)
Me:窗体控件对象
bArr:按钮数组
10:上边距
20:左边距
True:横向排列 False:竖向排列