无法创build表格VBA excel

当我运行这个function

Call makeTable("Uber Tracker", range(Cells(7, 1), Cells(LastUber, 42))) Call makeTable("Finance Tracker", range(Cells(21, 1), Cells(LastFinance, 23))) 

第一个调用工作正常,但第二个显示错误1004工作表范围必须在创build表的同一张表上。

  Sub makeTable(TableSheet As String, TableRange As range) On Error GoTo errorHandler Sheets(TableSheet).ListObjects.Add(xlSrcRange, TableRange, ,xlYes).name = TableSheet errorHandler: If Err.Number <> 0 Then Debug.Print "Error number :" + CStr(Err.Number) + " reason: " + Err.Description End If End Sub 

哪里不对? 我已经检查过它select的是哪一张,它应该是正确的,范围是一样的。

您的TableRange是在ActiveSheet(无论在哪里)。 您正在尝试在工作表(“财务跟踪器”)上创build一个表格,其范围取自活动工作表。

根据你真正需要的东西,你可以像这样改变可执行的sub:

 ActiveSheet.ListObjects.Add(xlSrcRange, TableRange, ,xlYes).name = TableSheet 

或者像这样改变电话:

 Call makeTable("Finance Tracker", sheets("Finance Tracker").range(sheet("Finance Tracker").Cells(21, 1), sheet("Finance Tracker").Cells(LastFinance, 23))) 

只要确保一切都发生在同一张纸上。

编辑:

还有一件事要尝试(对我来说也是这样):

 Worksheets("Uber Tracker").Activate Call makeTable("Uber Tracker", Range(Cells(7, 1), Cells(10, 42))) Worksheets("Finance Tracker").Activate Call makeTable("Finance Tracker", Range(Cells(21, 1), Cells(30, 23))) 

只要确保用于创build表格的范围位于要添加表格的同一张工作表上。 有很多方法可以做到这一点,这只是一些例子。

您也可以使用传递给例程的范围的地址:

 Sheets(TableSheet).ListObjects.Add(xlSrcRange, Sheets(TableSheet).Range(TableRange.Address), ,xlYes).name = TableSheet