当输入数据(用户点击"返回")到B列的任何单元格时,我想在刚刚输入数据的行的正下方插入四行。
我希望程序在用户点击单元格后自动运行。我一直有三个要点:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B3:B14]) Is Nothing Then Sheets("PDCA Tracking").Add_Row
End Sub
实际运行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
输入数据后,我想取出用户刚添加数据的行下方的单元格并合并它们。 (即如果用户输入" banana"并且我在#34; banana"下面添加了四行,我希望香蕉下的四个新单元与包含" banana&#的单元合并34;我知道那里有.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"
答案 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