在工作表中动态添加窗体控件
下面的内容及程序代码模仿自《Excel 2007 VBA Programmer’s Reference》,可能在某些情形下极其有用,因此特辑录于此,供参考。
如下图所示,双击工作表Sheet1的列A中的任一单元格,将出现一组合框,允许用户选择其中的项目。当用户选取某项目后,将自动输入到该单元格,并在该单元格右侧的单元格中输入相应的价格数字,组合框同时消失。

下面是程序代码。在工作表Sheet1的代码模块中输入BeforeDoubleClick事件代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Columns(”A”)) Is Nothing Then
Call AddDropDown(Target)
Cancel = True
End If
End Sub
在任一模块中,输入下面的代码:
Sub AddDropDown(Target As Range)
Dim ddBox As DropDown
Dim vProducts As Variant
Dim i As Integer
‘创建产品数组
vProducts = Array(”香蕉”, “苹果”, “菠萝”, “葡萄”)
‘在目标单元格中添加下拉控件
With Target
Set ddBox = Sheet1.DropDowns.Add(.Left, .Top, .Width, .Height)
End With
‘定义执行的宏并填充列表
With ddBox
.OnAction = “EnterProdInfo”
For i = LBound(vProducts) To UBound(vProducts)
.AddItem vProducts(i)
Next i
End With
End Sub
Private Sub EnterProdInfo()
Dim vPrices As Variant
‘创建价格数组
vPrices = Array(6, 8, 5, 4)
‘输入所选项到相应的单元格
With Sheet1.DropDowns(Application.Caller)
.TopLeftCell.Value = .List(.ListIndex)
.TopLeftCell.Offset(0, 1).Value = vPrices(.ListIndex + LBound(vPrices) - 1)
‘删除
.Delete
End With
End Sub
如下图所示:



发表评论