Excel VBA 在工作表中插入/删除行

Posted

技术标签:

【中文标题】Excel VBA 在工作表中插入/删除行【英文标题】:Excel VBA Insert/delete Row in Sheet 【发布时间】:2017-07-24 18:10:59 【问题描述】:

我有一个用于库存跟踪的 Excel 工作簿,但似乎无法让它在我需要的时候工作。我有一个包含产品的主表,然后是多个仓库位置的表。我希望能够在我的主表中添加一个新行并使用新产品更新其他表。我尝试编写一个 VB 脚本将零件编号从主库复制到仓库主库,然后使用 vlookup 填充列表。我选择了这种方法,以便当我更改 master 中的描述时,它会更新所有工作表。我似乎无法编写一个 VB 脚本来在我想要的位置插入一行并在我的其他工作表中执行相同的操作。

这是一个例子:

我用来将行从主表添加到子表的代码:

Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False 对于 a = 1 到 10 Sheets("Master").Rows(a).Copy Sheets("VBtest").Rows(a).Insert Shift:=xlDown 下一个 Application.ScreenUpdating = True 结束子

问题是它删除了我所有的股票信息。只是尝试在行的第一个单元格中添加空白行并复制零件号似乎对我不起作用。

【问题讨论】:

这个例子是你想要的样子,还是你的代码看起来如何?请发布您的代码,以便我们查看。 只需将“仓库主”和“仓库远程”工作表单元格内容链接到相应“主”单元格的内容,并使用='Master '!A2 这样的简单公式写入范围 A2:F1000(或其他任何内容)您需要的最大行大小) 这一直有效,直到我在 master 中添加一个新行,子表中的额外列仍然存在,但 A:F 得到更新。商品的描述会随着您的方法而改变,但不会将库存信息向下移动以匹配旧的描述。 【参考方案1】:

在“主”工作表代码窗格中添加以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    With Range("A" & Target.row & ":F" & UsedRange.Rows(UsedRange.Rows.count).row)
        Worksheets("Warehouse Main").Range(.Address).Value = .Value
        Worksheets("Warehouse Remote").Range(.Address).Value = .Value
    End With
End Sub

【讨论】:

@Ryan,你通过了吗? 抱歉回复晚了。这对物品本身非常有效,但我的库存信息并没有向下移动。如果我将范围扩大到第 I 行,我插入的行上下的股票信息就会消失。 用户3598756有什么想法吗?提前致谢。

以上是关于Excel VBA 在工作表中插入/删除行的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA在生成副本的工作表中插入本工作簿中的VBA模块代码

Access VBA:删除单元格值与 Access 表中的值匹配的 Excel 行

如何在excel 用VBA插入多个工作表并命名。要用到宏。给分给分~

利用vba怎样编写将工作表中第三行到最后一行(不确定)的数据复制并插入到另一个工作表的第二行前?

怎样将EXCEL工作表中某列数值小于一个数的行删除,或将工作表中某列数值大于一个数的行统计到另一个工作表

如何使用 vba 从具有多个数据字段的 excel 数据透视表中删除小计