vba - 如何从范围变量中获取表的名称?

标签 vba excel range

我调暗了变量:

Dim mainTableRange As Range

然后给它一个值:
Set mainTableRange = Range("tLedgerData") ' tLedgerData is an Excel table.

现在我试图从变量中获取表的名称(即“tLedgerData”)以引用该表中的列,即使表名发生更改也是如此。

我试过了
mainTableRange.Name


mainTableRange.Name.Name

(参见 how do you get a range to return its name。)两者都引发了运行时错误“1004”:应用程序定义或对象定义错误。
mainTableRange.Select选择了除标题和总行之外的所有表数据。

最佳答案

我认为您在这里遇到了 X-Y 问题:当解决问题 Y 时解决问题 X。

[...] to reference columns in that table even if the table name changes



有表/ListObject单独在自己的专用工作表上,并给工作表一个CodeName .这样你就可以这样做:
Dim tbl As ListObject
Set tbl = LedgerDataSheet.ListObjects(1)

现在您拥有ListObject 的全能力量API 做任何你想做的事。例如,检索列名:
Dim i As Long
For i = 1 To tbl.ListColumns.Count
    Debug.Print tbl.ListColumns(i).Name
Next

换句话说,您不需要关心表的名称。你想要的是使用它的ListObject .而且由于您永远不需要按名称引用它,表的名称完全无关紧要,用户可以随心所欲地更改它,您的代码甚至不会注意到。

关于vba - 如何从范围变量中获取表的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41250261/

相关文章:

vba - 如果主题行中包含 10 位数字,如何自动将电子邮件移至文件夹

vba - 将选择导出到 CSV

excel - PowerPivot 筛选功能

excel - 如何调用在另一个 UDF 中返回数组的 UDF?

VBA : Delete rows using variables

sql - 从 Power Pivot ("Item.data"提取 2000 万行)

javascript - Edge 浏览器 - iframe.document.open 不起作用

vba - 使用 VBA 在 Word 中创建另一个范围对象的副本

php - 在 PHP 中解析 HTTP_RANGE header

excel - 如何在 vba 中引用名称不同的工作表名称