前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel实战技巧73:使用组合框控件仿数据验证下拉列表

Excel实战技巧73:使用组合框控件仿数据验证下拉列表

作者头像
fanjy
发布2020-02-18 12:02:53
2.7K0
发布2020-02-18 12:02:53
举报
文章被收录于专栏:完美Excel

如下图1所示,在工作表Sheet1的列A中任意单元格上双击鼠标,将会出现一个窗体控件,单击其右侧的下拉箭头会出现列表,你可以从中选择列表项,所选项将被输入到该控件所在的单元格中,并且输入数据后该控件会消失。

图1

实现上述效果的代码如下。

在工作表Sheet1的代码模块中,输入代码:

代码语言:javascript
复制
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
    '如果单元格在列A中
    If Not Intersect(Target,Columns("A")) Is Nothing Then
        '调用过程
        Call AddDropList(Target)
        Cancel = True
    End If
End Sub

上述代码在用户双击工作表Sheet1上列A中的单元格时,调用AddDropList过程,并将Cancel设置为True取消双击事件。

插入一个标准模块,在其中输入代码:

代码语言:javascript
复制
'添加仿下拉列表的窗体控件
Sub AddDropList(Target As Range)
    Dim drp As DropDown
    Dim varItems As Variant
    Dim i As Integer
   
    '创建列表项数组
    varItems = Array("东区", "西区", "南区", "北区")
   
    '添加下拉控件
    With Target
        Set drp =Sheet1.DropDowns.Add(.Left, .Top, .Width, .Height)
    End With
   
    '设置要运行的过程并填充列表
    With drp
        .OnAction ="EnterInfo"
        For i =LBound(varItems) To UBound(varItems)
            .AddItem varItems(i)
        Next i
    End With
End Sub
 
'输入所选项后删除控件
Private Sub EnterInfo()
    With Sheet1.DropDowns(Application.Caller)
        .TopLeftCell.Value =.List(.ListIndex)
        .Delete
    End With
End Sub

说明:

1.AddDropList过程使用DropDowns集合的Add方法创建一个下拉列表,并设置其Left属性、Top属性、Width属性和Height属性,将其与目标单元格对齐。定义下拉列表的OnAction属性为EnterInfo过程,这表明当从下拉列表中选择一个列表项时将运行EnterInfo过程。

2. EnterInfo过程使用Application.Caller返回调用OnAction设定过程的下拉控件的名称,从而获取对该控件对象的引用。

3.DropDown对象的TopLeftCell属性返回位于该对象左上角的Range对象的引用,ListIndex属性返回所选项在列表中的位置,作为List属性的索引值返回具体的列表项。

4.与使用数据验证不同的是,本文介绍的代码方法更灵活,在你需要选择列表项时双击鼠标,要自已输入不在列表项中的数据时可直接输入。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档