如果列名有换行符,如何引用Excel ListObject表列?

我的任务如下:

  • 来自不同工作簿的几张纸必须复制到新的工作簿中
  • 每个表单都包含一个Excel表格(一个ListObject),名称类似于带有后缀T的表格(表格FooT)
  • 新的工作簿必须包含汇总表,其中列出每个表名称,并且通过用合适的公式来引用相应表格的各种值

这必须经常为不同的工作簿,所以想法是在VBA做到这一点。

复制工作表很简单,在新工作表中列出表名很容易,但是引用这些值会遇到问题。

总体思路是做到以下几点

ActiveSheet.Range("A1").Value = "FooT" ActiveSheet.Range("B1").Formula = "=FooT[[#Totals],[Quantity]]" ActiveSheet.Range("C1").Formula = "=FooT[[#Totals],[Total List Price]]" 

并遍历所有表单。

设置A的值和B的公式按预期工作并获得预期的结果。

与C的问题是,而不是“总价格”,列标题实际上被格式化为

“总
名单
价钱”

我无法改变,这是一个devise决定。

如果我手动将公式添加到单元格,这也是如何在公式中显示列名称。

所以在这里发生了某种换行,而我已经试过在VBA中用这个来迎合这个

 ActiveSheet.Range("C1").Formula = "=FooT[[#Totals],[Total" & vbCrLf & _ "List" & vbCrLf & _ "Price]]" 

和vb_Cr和vb_Lf和vb_Newline而不是vbCrLf。 试图将C的公式设置为这些变体中的任何一个,都会产生臭名昭着的Error 1004。

从其中一个工作表中获取列标题的值,并在公式工作中使用它。 这可能是一个潜在的解决方法,但我真的很想知道我是否缺less什么,或者我怎样才能弄清楚如何正确构build这个公式string。

你的公式是好的,但通常情况下,如果从键盘设置标题,换行符将是vbLf。 我也怀疑在标题的任何地方可能会有前导和/或尾随空格字符。 select您的标题单元格,并从VBE的立即窗口(Ctrl + G),键入Debug.Print ActiveCell.Value,然后检查每个打印行结束。

你是否使用Option Explicit? 在你的问题中,你提到你已经尝试过vb_Lf,但是这个常量不存在,没有Option Explicit就会被解释为一个空string。