Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果列名称有换行符,如何引用Excel ListObject表列?_Excel_Excel Formula_Excel 2010_Vba - Fatal编程技术网

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

如果列名称有换行符,如何引用Excel ListObject表列?,excel,excel-formula,excel-2010,vba,Excel,Excel Formula,Excel 2010,Vba,我的任务如下: 必须将不同工作簿中的多张工作表复制到新工作簿中 每个工作表都包含一个Excel表和一个ListObject,其名称与带有postfixed T sheet Foo的工作表类似,table:FooT 新工作簿必须包含一个汇总表,其中列出了每个表名,并通过引用适当的公式来显示各个表的各种值 必须经常为不同的工作簿执行此操作,因此我们的想法是在VBA中执行此操作 复制工作表很容易,在新工作表中列出表名很容易,但引用值会遇到问题 总体思路是执行以下操作 ActiveSheet.Range

我的任务如下:

必须将不同工作簿中的多张工作表复制到新工作簿中 每个工作表都包含一个Excel表和一个ListObject,其名称与带有postfixed T sheet Foo的工作表类似,table: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的问题是,列标题的格式实际上是

总数 列表 价格

我不能改变,这是一个设计决定

如果我手动将公式添加到单元格中,列名也会显示在公式中

所以这里发生了某种类型的断线,我试着用VBA解决这个问题

ActiveSheet.Range("C1").Formula = "=FooT[[#Totals],[Total" & vbCrLf & _
                                                   "List" & vbCrLf & _
                                                   "Price]]"
和vb_Cr和vb_Lf以及vb_换行符,而不是vbCrLf。试图将C的公式设置为这些变化中的任何一个都会产生臭名昭著的错误1004


从其中一张表中获取列标题的值,并在公式中使用它。这可能是一个潜在的解决方法,但我真的想知道我缺少了什么,或者如何正确构建此公式字符串。

您的公式可以,但通常,如果标题是从键盘设置的,换行符将是vbLf。我还怀疑标题中可能有前导和/或尾随空格字符。选择标题单元格,然后从VBE的即时窗口Ctrl+G中,键入Debug.Print ActiveCell.Value,然后检查每行打印的结束位置


您是否使用Option Explicit?在您的问题中,您提到您已尝试使用vb\u Lf,但该常量不存在,如果没有Option Explicit,将被解释为空字符串。

无法100%与excel对话,但在SQL中,返回和换行符对于列来说根本不是有效字符。这也适用于.NET中的datagrid和相关对象。我可以假设它也适用于excel。设计决定似乎把你逼到了绝境。也许您可以存储索引并通过该值引用它?您的公式可以,但通常,如果标题是从键盘设置的,换行符将是vbLf。我怀疑Total和/或List后面有一个空格。选择您的标题,然后在即时窗口中键入Debug.Print Selection.Value,然后检查每行打印的结束位置。@Excelosaurus您能将其转换为答案吗?vbLf工作正常,没有空间。似乎是其中一个错误,第二天打开Excel时,未更改的代码突然开始工作。是的,设置了Option Explicit。