VBA小技巧11:创建动态有效性列表

您所在的位置:网站首页 VBA设置数据有效性下拉 VBA小技巧11:创建动态有效性列表

VBA小技巧11:创建动态有效性列表

2024-06-02 16:40| 来源: 网络整理| 查看: 265

在有些情况下,当工作簿发生变化时,有效性列表中的项目随之更新是很有用的。例如,如下图1所示,在“目录”工作表中,使用数据有效性列出了工作簿中所有工作表的名称,这可用于对工作表进行导航操作。对于含有大量工作表的工作簿来说,这尤其有用。

图1

当我们在工作簿中添加或者删除工作表时,想要该有效性列表能够自动更新,如下图2所示。

图2

可以使用VBA代码来实现。

按下Alt+F11组合键,打开VBE,插入一个标准模块,输入下面的代码:

代码语言:javascript复制Sub AddSheetsName() Dim i As Integer Dim strList As String Dim wks As Worksheet For Each wks In Worksheets If wks.Name "目录" Then strList = strList & wks.Name & "," End If Next wks Worksheets("目录").Range("C2").ClearContents With Worksheets("目录").Range("C2").Validation .Delete .AddType:=xlValidateList, Formula1:=strList End With Set wks =Nothing End Sub

代码中,遍历工作簿中所有工作表,将除“目录”工作表之外的工作表名称使用“,”连接成字符串。然后清除单元格C2中的内容并删除其中存在的任何有效性列表,并添加新的有效性列表。

在VBE中,双击左侧工程资源管理器中的ThisWorkbook模块,在其代码窗口输入下面的代码:

代码语言:javascript复制Private Sub Workbook_NewSheet(ByVal Sh As Object) AddSheetsName End Sub Private Sub Workbook_Open() AddSheetsName End Sub Private Sub Workbook_SheetDeactivate(ByVal Sh AsObject) AddSheetsName End Sub

关闭工作簿,然后再打开该工作簿,效果如上图2所示。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3