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

excelperfect

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

图1

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

图2

可以使用VBA代码来实现。

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

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模块,在其代码窗口输入下面的代码:

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所示。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

(0)

相关推荐

  • Excel如何让目录始终显示,方便查找其余表

    这篇文章要和大家分享的是让目录表始终显示在当前活动表的前方.当我们一个工作簿里有很多个sheet时,需要快速的找到我们需要的sheet,在这种情境下这篇文章可以帮到你.比如下图: 这里有12个工作sh ...

  • 数据有效性9:使用INDEX函数创建动态级联列表

    在前面的文章中,我们介绍了使用OFFSET函数来创建动态更新的级联列表,本文介绍使用INDEX函数创建动态级联列表的方法和技巧. 准备工作表 首先准备两个工作表,"Data"工作表 ...

  • Excel技术 | 数据有效性8:使用Excel表创建动态级联列表

    Excel表能够创建结构化引用,并且在表中增加或删除行时,数据会自动调整.在Excel工作表中,选取数据单元格,单击"插入"选项卡中的"表"即可创建Excel表 ...

  • 办公小技巧:创建演示文稿的5种免费在线服务

    说起创建幻灯片演示文稿,我们首先会想到微软的PowerPoint或金山的WPS.其实,如果电脑中正好没有安装这些办公软件,我们还可以选择专用的演示文稿网络服务来创建演示文稿. 1. 来自微软的在线演示 ...

  • VBA小技巧09:从非连续的单元格区域将值复制到指定单元格区域

    excelperfect 本文将给出一段VBA代码,从非连续的单元格区域复制值并粘贴到另外指定的单元格区域. 如下图1所示,将右侧两个单元格区域的数据复制到左侧的两个单元格区域中. 图1 下图2是粘贴 ...

  • VBA小技巧10:删除工作表中的错误值

    excelperfect 这里将编写VBA代码,用来删除工作表指定区域中的错误值,这在很多情况下都很有用. 如下图1所示,有一组数据,但其中有一些错误值,我们想要自动删除这些错误值. 图1 删除错误值 ...

  • VBA小技巧12:查找正确的格式

    excelperfect 如果我们需要查找特定格式的单元格,例如字体为加粗或者有特定背景色的单元格,该怎么操作? 此时,就要用上Find方法的参数SearchFormat了.这是一个布尔参数,它告诉F ...

  • VBA小技巧13:匹配大小写查找

    excelperfect 有时候,我们需要执行区分大小写的查找,如下图1所示. 图1 我们要查找单词"Excel",如果使用下面的程序代码: Sub MatchCaseFind() ...

  • VBA小技巧14:拆分带有换行的单元格中的文本

    excelperfect 在Excel中,我们可以使用"分列"功能(即"文本到列"),很容易地将单元格中带有特定分隔符的文本拆分到不同的列中.但是,对于使用&l ...

  • VBA小技巧15:引用形状

    excelperfect 这是一位朋友碰到的应用场景:我们必须创建很多形状来显示每个形状所覆盖的单元格中的文本值,有时这些单元格和/或形状会移动.如果手动检查每个形状并将其重新链接到其各自的单元格引用 ...