my e-mail:xhdsxfjy@163.com
| |
在工作表中动态添加窗体控件 fanjy 发表于 2008-8-19 8:38:00 |
下面的内容及程序代码模仿自《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
如下图所示:
|
|
发表评论:
|