在input数据时自动插入行,然后合并单元格

当input数据(用户已经命中“返回”)到列B中的任何单元格时,我想直接在input数据的行的正下方插入四行。

我希望程序在用户击中单元格后自动运行。 我一直有三个难点:

  1. 寻找一种程序在没有用户点击button的情况下运行的方式。 我花了相当长的时间search示例代码来使用,并find了几个资源,但我用过的两个例子似乎没有工作。 PDCA是工作表名称,Add_Row是我写的在用户input的数据下面添加行的macros。

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [B3:B14]) Is Nothing Then Sheets("PDCA Tracking").Add_Row End Sub

  1. 实际上运行Add_Row程序。 我收到错误1004应用程序定义或用户定义的错误。 我的第二个问题是,当用户点击返回时,活动单元格将不是他/她刚才input的数据,是吗? 我将如何减轻这一点? 这将是电子表格的最后一行,我可以find最后一行,然后在下面添加行吗?

      Sub Add_Row'Insert row below active cell ActiveCell.Offset(1).EntireRow.Insert Cells(ActiveCell.Offset(1), 3).Value = "Zulu" ActiveCell.Offset(2).EntireRow.Insert Cells(ActiveCell.Offset(2), 3).Value = "Yankee" ActiveCell.Offset(3).EntireRow.Insert Cells(ActiveCell.Offset(3), 3).Value = "X-Ray" ActiveCell.Offset(4).EntireRow.Insert Cells(ActiveCell.Offset(4), 3).Value = "Whiskey" 'Call Merge_Cells End Sub 
  2. input数据后,我想把用户刚添加数据的行下面的单元格合并起来。 (即如果用户input“香蕉”,我在“香蕉”下面添加了四行,我只需要香蕉下面的四个新单元与包含“香蕉”的单元合并,我知道有一个.Merge命令,但是不能确定的语法使用。

任何和所有的帮助,非常感激!

更新:我想,如何添加最后一行填充数据,我相信。

 Dim lastRow As Long lastRow = Range("A" & Rows.Count).End(xlUp).Row Cells(lastRow + 1, 3).Value = "Zulu" Cells(lastRow + 2, 3).Value = "Yankee" 

 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo haveError If Target.Cells.Count = 1 And _ Not Application.Intersect(Target, [B3:B14]) Is Nothing Then Application.EnableEvents = False With Target .Offset(1, 0).Resize(4, 1).Insert Shift:=xlDown .Resize(5, 1).Merge .VerticalAlignment = xlTop End With Application.EnableEvents = True End If Exit Sub haveError: Application.EnableEvents = True End Sub