excel 在工作表中,我是否可以向包含多个命名表的工作表中的列表对象添加行?

disho6za  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(84)

我试图创建一个交互式工作簿,允许在工作表中跟踪项目,但只有一个输入表。当前代码从输入工作表中获取项目属性,并在工作簿中的一个新工作表上创建两个命名表。
工作表上的第一个命名表来自“A2:P3”,这是我想添加行的表。工作表上的第二个命名表来自“A20:AB 28”,但它是硬编码的,从单元格“A20”开始,我宁愿它在向上面的表添加行时不移动。
当我尝试向已创建的工作表/表格添加新的项目行时,就会出现问题。当我到达专门用于添加新行的代码行时,我得到了错误1004。当工作表上的第二个命名表不存在时,代码可以工作,但是一旦我添加了第二个命名表,我就会得到错误。
这是在工作簿Excel对象中,它没有显示任何问题,在活动工作表之间移动,“i”变量表示应该激活的工作表。
我试过使用ListList.Add Position:=1,AlwaysInsert:=True,但这不起作用,也不能在中间步骤中删除lrow变量。

Dim i As Variant, tbl As String, ProjectTable As ListObject, lrow As ListRow
 
' Define Working Sheet/Client
i = Worksheets("Create New Project").Range("New_Project_Client_Name").Value
tbl = (i & "Project")
Debug.Print (tbl)
    
'Set Project Table Name
Set ProjectTable = Worksheets(i).ListObjects(i & "Project")
    Debug.Print (Worksheets(i).Name)
    Debug.Print (ProjectTable.Name)

' Find last row in Named Project Table
Set lrow = ProjectTable.ListRows.Add 'Row where error occurs
 
    lrow.Range.Select
    lrow.Range(1).Value = Range("New_Project_Client_Name").Value
    lrow.Range(2).Value = Range("New_Project_Name").Value
    lrow.Range(3).Value = Range("New_Project_Budget").Value
    lrow.Range(4).Value = Range("New_Project_Status").Value
    lrow.Range(5).Value = Range("New_Project_Invoice_Type").Value
    lrow.Range(6).Value = Range("New_Project_Prepaid").Value

当我调试时,项目表引用了正确的工作表和工作簿中正确的表。当第二个表(也是命名的)在工作表中时,它就不起作用了。

ddrv8njm

ddrv8njm1#

尝试这个稍微不同的方法:

Dim ProjectTable As ListObject, lrow As ListRow

Set ProjectTable = ActiveSheet.ListObjects("Table5") 'for example...

With ProjectTable
    .Resize .Range.Resize(.Range.Rows.Count + 1)  'make the table one row larger
    Set lrow = .ListRows(.ListRows.Count)         'grab the (new) last row
End With

相关问题