如果列名有换行符,如何引用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。