如何在Excel VBA中在Detail工作表显示Group表的工作表级名称列表
解决方法:提取Group工作表作用域名称到Detail工作表
原代码问题说明
你使用的ListNames方法默认只输出工作簿级名称,不会识别工作表级的名称,所以无法显示Group里的三个名称,而且依赖选区的写法也不够稳定。
正确VBA代码
Sub ListSheetLevelNames() Dim wsDetail As Worksheet Dim wsGroup As Worksheet Dim nm As Name Dim rowNum As Integer ' 指定目标和源工作表 Set wsDetail = ThisWorkbook.Worksheets("Detail") Set wsGroup = ThisWorkbook.Worksheets("Group") rowNum = 1 ' 从第1行开始写入数据 ' 清空Detail原有内容(可选,按需保留) wsDetail.Cells.ClearContents ' 遍历所有名称,筛选Group工作表作用域的名称 For Each nm In ThisWorkbook.Names If nm.Parent.Name = wsGroup.Name Then wsDetail.Cells(rowNum, 1).Value = nm.Name rowNum = rowNum + 1 End If Next nm End Sub
代码说明
- 明确指定
Detail和Group工作表对象,避免依赖当前激活的工作表 - 通过
nm.Parent.Name判断名称的作用域所属工作表,精准筛选目标名称 - 将符合条件的名称依次写入Detail工作表的A列,逐行向下填充
执行步骤
- 按
Alt+F11打开VBA编辑器 - 右键当前工作簿,选择「插入」→「模块」
- 将上述代码粘贴到模块中
- 运行该宏,即可在Detail工作表的A列看到mk_1、mk_2、mk_3
内容的提问来源于stack exchange,提问作者mps info
相关产品推荐
相关产品推荐

