首页 文章

从vba回复excel信息框

提问于
浏览
0

我正在尝试使用下面的代码将查询表从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表不能与包含数据透视表报告, query results ,受保护的单元格或另一个表的范围重叠 .

如果我包含它,则不会显示错误,但也不会创建表 .

有关处理这个或替代方法从查询表创建excel表的任何建议吗?

1 回答

  • 0

    虽然这不能解决您问题的主要观点,但我想指出定义您的 Sheets("Fund Performance").RangeRange 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块中记录的父工作表的引用 . 这意味着父工作表引用仅 Build 一次并重用 . 在前一个详细方法中, Build 父工作表引用并重新 Build 三次 .

相关问题