You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel宏问题:仅需给指定表格新增行却所有表格都添加了行

问题解决:仅给指定Excel表格添加行并填充数据

你的代码之所以会给所有表格都新增一行,是因为你在If判断之前就执行了三个表格的ListRows.Add操作——不管后续条件是否匹配,这三行新增操作已经完成了。

要实现仅给指定表格添加行的需求,需要把新增行的代码移到对应的If分支内部,只有当条件满足时,才执行对应表格的新增行和数据填充操作。

修改后的代码如下:

Sub AddQuoteNumbers()
    'ListObject is a Table in a Worksheet'
    Dim tbl As ListObject
    Dim tb2 As ListObject
    Dim tb3 As ListObject

    Set tbl = Worksheets("quote1").ListObjects("Table1")
    Set tb2 = Worksheets("quote2").ListObjects("Table2")
    Set tb3 = Worksheets("quote3").ListObjects("Table3")

    'ListRows allows us to Add or Delete Rows'
    Dim NewRow As ListRow
    Dim templateWs As Worksheet
    Set templateWs = Worksheets("Template") ' 提前引用模板工作表,简化代码

    Select Case templateWs.Range("H5").Value
        Case "quote1"
            Set NewRow = tbl.ListRows.Add
            With NewRow
                .Range(1) = templateWs.Range("B9")
                .Range(3) = templateWs.Range("B8")
                .Range(4) = templateWs.Range("H4")
                .Range(5) = templateWs.Range("B13")
            End With
        Case "quote2"
            Set NewRow = tb2.ListRows.Add
            With NewRow
                .Range(1) = templateWs.Range("B9")
                .Range(3) = templateWs.Range("B8")
                .Range(4) = templateWs.Range("H4")
                .Range(5) = templateWs.Range("B13")
            End With
        Case "quote3"
            Set NewRow = tb3.ListRows.Add
            With NewRow
                .Range(1) = templateWs.Range("B9")
                .Range(3) = templateWs.Range("B8")
                .Range(4) = templateWs.Range("H4")
                .Range(5) = templateWs.Range("B13")
            End With
    End Select
End Sub

额外优化说明

  • 使用Select Case替代嵌套If,代码结构更清晰,可读性更强
  • 提前引用Template工作表,避免重复写Worksheets("Template"),简化代码维护

内容的提问来源于stack exchange,提问作者Mocha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:40:24