ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA设置动态数据有效性?

如何用VBA设置动态数据有效性?

作者:绿色风 分类: 时间:2022-08-17 浏览:146
楼主
omnw
Q:如何用VBA设置动态数据有效性?
A:使用VBA可以根据已经存在的数据列表,创建动态的数据有效性,提高操作的简便性和录入的效率。代码如下:
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim i As Integer
  3.     Dim str As String
  4.     str = [A1]
  5.     For i = 2 To [A65536].End(xlUp).Row
  6.         If Application.WorksheetFunction.CountIf(Range("A1:A" & i - 1), Cells(i, 1)) = 0 Then
  7.             str = str & "," & Cells(i, 1)
  8.         End If
  9.     Next
  10.     If Target.Count = 1 Then
  11.         If Target.Column = 3 Then
  12.             With Target.Validation
  13.                 .Delete
  14.                 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=str
  15.             End With
  16.         End If
  17.     End If
  18. End Sub

注:A列存在已知的数据列表(有重复内容),在C列创建动态数据列表。这样如果A列的数据发生了变化,C列的数据有效性列表就会随之变化。
动态数据有效性.rar
2楼
jxwfz740724
学习学习,呵呵
3楼
小伟精品
不是我想要的,不过谢谢了!
4楼
capricorn
AlertStyle:=xlValidAlertStop和 Operator:=xlBetween是否可以省略呢?我看帮助上说可以省略,但给的例子中又没有省略,不明白省略好还是不省略好。
5楼
qinhuan66
好好学习天天向上
6楼
icenotcool


免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap