输入数据时自动插入行&然后合并单元格

时间:2015-06-25 20:10:36

标签: excel vba excel-vba

当输入数据(用户点击"返回")到B列的任何单元格时,我想在刚刚输入数据的行的正下方插入四行。

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

  1. 找到一种无需用户点击按钮即可运行程序的方法。我花了相当多的时间搜索使用的示例代码,并找到了几个资源,但我使用过的两个例子似乎没有用。 PDCA是工作表名称,Add_Row是用于在用户输入的数据下添加行的宏。
  2. 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应用程序定义或用户定义错误。我的第二个问题是,当用户点击返回时,活动单元格不会是当时输入数据的那个,是吗?我该如何减轻这种影响?这将是电子表格的最后一行,我可以找到最后一行,然后只在其下面添加行吗?:

           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. 输入数据后,我想取出用户刚添加数据的行下方的单元格并合并它们。 (即如果用户输入" banana"并且我在#34; banana"下面添加了四行,我希望香蕉下的四个新单元与包含" banana&#的单元合并34;我知道那里有.Merge命令,但又不知道要使用的语法。

    3. 非常感谢任何和所有帮助!

      更新:我相信如何在最后填充的行下面添加数据。我相信。

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

1 个答案:

答案 0 :(得分:2)

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