从vba回复excel信息框

时间:2016-02-24 19:37:30

标签: excel vba excel-vba

我正在尝试使用下面的代码将查询表转换为来自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表?

1 个答案:

答案 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块中记录的父工作表的引用。这意味着父工作表引用仅建立一次并重用。在前一个详细方法中,建立父工作表引用并重新建立三次。