如何在 Excel 中根据动态数据范围自动调整组合框或列表

立即分享:

如果从数据库下载的数据超出了组合框的范围,新的项目就不会显示出来。 为了解决这个问题,列表框或组合框下面的范围需要扩展或收缩以匹配数据。 本文研究了如何自动执行此操作。 

假定读者已显示 Developer 功能区并且熟悉 VBA 编辑器。 如果没有,请谷歌“Excel Developer Tab”或“Excel Code Window”。

显示组合框的一种专业方法是根据需要扩大或缩小范围。 例如:显示组合框的专业方式

动态范围的关键是使用函数 =countA 监视相关列中填充行的数量。 此函数计算一系列单元格中填充的元素,直到它到达最后一个; 在上图中的第一个图表的情况下,那将是第 11 行。

要自动维护一个范围,需要定义名称来跟踪填充的行数。 例如,我们使用 eCol(结束列)和 eRow(结束行)来定义范围的边界。 我们填充的行越多,eRow 的价值就越大。使用 eCol 和 eRow 定义范围边界

上面定义的名称已将列表设置为一列宽 (eCol = 1),由 eCol (eRow = 11) 中填充的行数

最后,标题出现在“A2:A”和 eRow 范围内。 您会注意到 Index 函数用于在名为“Titles”的范围内建立最后一个单元格。 实际上,范围“A2:A”和 eRow 在此阶段转换为“A2:A11”。索引功能

我们可以在工作簿打开时自动设置动态范围,方法是使用在工作簿可见之前运行的 Auto_open 子过程。

守则

打开工作簿并使用组合框和一些数据填充它。 可以找到本练习中使用的示例工作簿 开始.

打开 VBA 代码窗口并插入一个模块。 将下面的代码复制到模块中。

Auto_Open 事件设置动态范围“标题”的最后一行和最后一列值,并记录随后所做的更改。

Sub auto_open()
     Dim eRow As Integer, eCol As Integer, i As Long
 
     On Error Resume Next
 
     'Clear the present define names, to avoid any duplications
     activeworkbook.Names("eCol").Delete
     activeworkbook.Names("eRow").Delete
     activeworkbook.Names("Titles").Delete
     Range("A1").Select
 
    'Titles will appear in the first column, A in this case
    eCol = 1
 
    'Find the last populated row
    eRow = Sheets("Main").Cells(Rows.Count, eCol).End(xlUp).Row
 
    'Define the names
     activeworkbook.Names.Add Name:="eCol", RefersTo:="=COUNTA($1:$1)"
     activeworkbook.Names.Add Name:="eRow", RefersToR1C1:="=COUNTA(C" & ColNo & ")"
     activeworkbook.Names.Add Name:="Titles", RefersTo:="=A2:INDEX($2:$200," & "eRow," & "eCol)"
End Sub

Sub DropDown1_Change()
     MsgBox "Directed by " & Cells(2, 5)
End Sub

注意:为了方便查看,所有内容都放在同一页面上。通常情况下,A 列和 B 列以及 D 列和 E 列的值会位于另一个可能隐藏的工作表中。另请注意,本练习中未使用第二列(B 列)来定义范围;B 列的值是通过组合框的单元格链接属性以常规方式获取的(D2 表示选择范围中的第三个元素,该范围从 A2 开始,并结合 E3 中的 INDEX 函数来查找目录 (=INDEX(B:B,D2+1,1)))。组合框最初将由 Auto_open 填充

保存工作簿,然后重新打开它。 组合框最初将由 Auto_open 填充。 向 A 列和 B 列添加项目,并观察组合框的变化。

抢救损坏的 Excel 文件

有时,Excel 文件可能会在 Excel 意外崩溃后损坏。 如果您有备份,那么您可以简单地使用备份恢复数据。 否则,您可能需要寻求专业的专家或工具来恢复 损坏的 Excel 文件。

作者简介:

Felix Hooker 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 rar修复 和sql恢复软件产品。 欲了解更多信息,请访问 datanumen.com

立即分享:

评论被关闭。