我正在尝试使用下面的代码将查询表转换为来自vba的excel表。
Set tableRange = Sheets("Fund Performance").Range(Range("C7"),Range("I7").End(xlDown))
On Error Resume Next:
Sheets("Fund Performance").ListObjects.Add(xlSrcRange, tableRange, , xlYes).Name = Symbol
On Error GoTo 0
没有" On Error Resume Next"我收到错误1004 表格不能与包含数据透视表格报告,查询结果,受保护的单元格或其他表格的范围重叠。
如果我包含它,则不会显示错误,但也不会创建表。
有哪些建议可以处理这个或替代方法来从查询表创建excel表?
答案 0 :(得分:0)
虽然这不能解决您问题的主要观点,但我想指出定义表格(“基金效果”)的Range object。范围没有显式工作表父级。当离开依赖于ActiveSheet property来定义父工作表时,这可以产生一个,
运行时错误1004:
应用程序定义或对象定义的错误。
最佳做法是明确定义构建Range对象的所有父工作表引用。
'verbose method
Set tableRange = Sheets("Fund Performance").Range(Sheets("Fund Performance").Range("C7"), Sheets("Fund Performance").Range("I7").End(xlDown))
'with ... end with block method; improved readability, faster execution
With Worksheets("Fund Performance").
Set tableRange = .Range(.Range("C7"), .Range("I7").End(xlDown))
End With
在后一种With ... End With statement方法中,请注意使用.Range
而非Range
。前缀句点带有对With ... End With块中记录的父工作表的引用。这意味着父工作表引用仅建立一次并重用。在前一个详细方法中,建立父工作表引用并重新建立三次。