从 vba 回复 excel 信息框



我正在尝试使用以下代码将查询表从 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

如果没有"下次恢复错误",我收到错误 1004表不能与包含数据透视表报表、查询结果、受保护单元格或其他表的区域重叠。

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

处理此方法或从查询表创建Excel表的替代方法的任何建议?

虽然这并没有解决您问题的主要问题,但我想指出定义您的工作表("基金业绩")的范围对象。区域没有显式工作表父项。当留下依赖 ActiveSheet 属性来定义父工作表时,这可以产生一个,

运行时错误 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

在后者中...结尾为语句方法,注意使用.Range而不是Range。前缀句点带有对父工作表的引用,该引用在 With ...以块结尾。这意味着父工作表引用仅建立一次并重复使用。在前一种详细方法中,父工作表引用被建立并重新建立三次。

最新更新