打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用VBA代码轻松控制下拉列表

本技巧的目的:掌握创建数据有效性,判断是否存在数据有效性,根据当前选择和数据创建动态数据有效性。

  • 如下图的动态数据有效性:

1. 使用代码助手

  • 代码助手下载地址 http://excel880.com/blog/archives/11297

  • 使用代码助手,输入中文:数据有效性 + 空格, 可以弹出选择框,选择需要的代码,实现代码的快速输入。

  • 代码助手可以随时收录需要的代码,方便下次使用。

2. 创建数据有效性的方法

  • 通过录制宏可以得到基础代码:

  • 注释:

  • Validation: 数据有效性

  • Delete: 删除

  • Add: 添加数据有效性验证

  • Type必选有效性验证类型:

  • xlValidateCustom:必需有 Formula1: 必须有一个表达式,忽略 Formula2。数据项有效时 True,数据项无效时 False

  • xlInputOnly: 使用 AlertStyle、Formula1 或 Formula2。

  • xlValidateList: 必需有Formula1: 必须包含以逗号分隔的值列表,或对该列表的工作表引用。忽略 Formula2

  • xlValidateWholeNumber、xlValidateDate、xlValidateDecimal、xlValidateTextLength 或 xlValidateTime

  • 必须指定 Formula1 或 Formula2 之一,或两者均指定。

  • AlertStyle可选有效性验证警告的样式。

  • xlValidAlertInformation:信息图标为标题的样式

  • xlValidAlertStop:停止图标为标题的样式

  • xlValidAlertWarning:警告图标为标题的样式

  • Operator可选数据有效性验证运算符

  • Formula1可选数据有效性验证等式中的第一部分。

  • Formula2可选当 Operator 为 xlBetween 或 xlNotBetween 时,数据有效性验证等式的第二部分(其他情况下,此参数被忽略)。

  • IgnoreBlank:数据有效性检验是否允许空值,允许: True 不允许:False

  • InCellDropdown:是否含取值的下拉列表,是:True 否:False

  • InputTitle:设置数据有效性输入对话框的标题

  • ErrorTitle:设置数据有效性错误对话框的标题

  • InputMessage:设置数据有效性检验输入信息

  • ErrorMessage:设置数据有效性检验错误消息

  • IMEMode:设置日文输入规则的说明

  • ShowInput在数据有效性检查区域内选定了某一单元格时,显示数据有效性检查输入消息,为 True

  • ShowError输入无效数据时显示数据有效性检查错误消息,为 True

  • 修改代码为:

  • With [A1:A10].Validation '设置 A1:A10的数据有效性

  • .Delete '删除原来的

  • .Add Type:=xlValidateList, Formula1:="1,2,3,4" '值列表类型,值:1,2,3,4

  • End With

  • 设置后:

3. 判断单元格是否存在数据有效性的方法

  • 注释:

  • type: 返回以下值,它代表区域的数据类型有效性验证。

  • On Error Resume Next '出现空值时会发生错误,加忽略错误语句

  • 执行后:

  • 检查 A11 单元格 结果:

  • 检查 A2 单元格:

  • Sub 判断是否存在有效性()

  •    Dim rng As Range

  •    Set rng = [A2]

  •    If 有效性判断(rng) Then '含有效性时

  •           MsgBox "单元格" & rng.Address(0, 0) & ":存在有效性" '执行存在的代码

  •     Else '不含有效性时

  •           MsgBox "单元格" & rng.Address(0, 0) & ":不存在有效性" '执行不存在的代码

  •      End If

  • End Sub

  • Function 有效性判断(r As Range)

  •    Dim s

  •    On Error Resume Next '忽略空值错误

  •    s = r.Validation.Type '数据有效性返回值

  •    If s <> "" Then '值不为空时

  •         有效性判断 = True '有数据有效性设置

  •    Else '值为空时

  •         有效性判断 = False '无数据有效性设置

  •    End If

  • End Function

  • ★★★注意:安装代码助手后,双击 TAB 可以实现自动排版功能,再也不用去手动对齐代码。

  • 结果:

4. 根据当前选择和数据创建动态数据有效性的方法

  • 建立动态数据有效性需要用到二个事件:

  • SelectionChange 当工作表上的选定区域发生改变时, Change 当用户更改工作表中的单元格

  • 事件中还使用了模块中的函数,方便事件的调试。

  • 注释:

  • If InStr(strlist, rng.Value) = 0 Then '当传入的列表值参数与原有单元格的值不相符时

  •      rng = "" '原有单元格值置空

  • End If

  • If rng = "" Then '如果原有单元格为空时

  •    rng.Select '选中单元格

  •    Application.SendKeys "%{down}" '发送弹出列表框的指令

  • End If

  • 在语句打断点调试该过程:

  • 原来 A4 值为: 显示器 B4 值为: 显示器对应的 飞利浦15

  • 当 A4 值 改变为: 主机时, 断点启动

  • 代码进入子函数过程: 添加2级数据有效性X Target.Offset(0, 1), "Z286,Z386,Z486,Z586"

  • 传入的列表值参数与原有单元格的值不相符, B4 单元格 置空

  • 选中 B4 单元格, 发送弹出列表框的指令

  • 动态数据有效性建立完毕

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用VBA遍历数据验证列表中的每一项
Excel VBA 8.53优化Excel有效性设置 提升工作效率
使用VBA在工作表中添加数据有效性
Excel利用VBA批量选择数据有效性下拉列表中的项目并打印
Excel办公技巧
Excel VBA 8.22 完善提取数字代码,正则是关键
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服