You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel VBA的Names.Add方法中使用结构化引用?

解决Excel VBA添加结构化引用名称的问题

你遇到的问题是因为VBA中直接使用=TestTable[One]作为引用时,Excel无法自动识别工作表上下文,而手动在名称管理器操作时Excel会自动补全这个上下文。有两种可靠的解决方法:

方法一:直接引用表格列的Range对象(推荐)

这种方式不需要手动拼接引用字符串,由VBA自动处理引用路径,更不易出错:

Sub Test()
    Dim targetTable As ListObject
    ' 指定表格所在的工作表,这里假设表格在活动工作表,若不在则替换为具体工作表名称,比如Sheets("Sheet1")
    Set targetTable = ActiveWorkbook.ActiveSheet.ListObjects("TestTable")
    ' 添加工作簿级名称,引用表格的"One"列
    ActiveWorkbook.Names.Add Name:="TestOne", RefersTo:=targetTable.ListColumns("One").Range
End Sub

方法二:补全工作表上下文的结构化引用字符串

如果坚持使用结构化引用的字符串写法,需要明确指定表格所在的工作表,让Excel能正确解析引用:

Sub Test()
    Dim ws As Worksheet
    ' 指定表格所在的工作表
    Set ws = ActiveWorkbook.ActiveSheet
    ' 拼接包含工作表的结构化引用字符串
    ActiveWorkbook.Names.Add Name:="TestOne", RefersTo:="='" & ws.Name & "'!TestTable[One]"
End Sub

两种方法都能成功创建工作簿级名称TestOne,在单元格输入=TestOne后会正常溢出显示表格One列的内容。

内容的提问来源于stack exchange,提问作者Rich Holton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:32:33