EXCEL中如何用VBA自动输入明细方法,请高手帮忙修改
在Excel中,我想在某一行的第三列内数据时,如果该行的其他列内没有数据,就等于上面一行的数据。如果有数据,原有数据不变。因为我的表格是一个模板,在设置时有行数限制。如果输入到最后一行时,我希望自动在增加一行。
下面的代码有点问题,现在请高手帮忙修改。主要是没有结束语句。
Private Sub Worksheet_ Change (ByVal Target As Range) '注意为了避免把行列标志写错,已经在单价所在的区域作了命名,命名为price确定明细表的行范围 Dim r1 As Long, r2 As_ Long ' r1和r2是明细表的行范围 r1 = Range("-price"). Row r2 = r1 + Range("- price").Rows. Count-1 Dim r As Long, c As Long r =Target. Row C =Target. Column '如果当前行列不在重里的范围内,什么也不做,返回 If Not (r>=r1 And r<= r2 Andc = Range(" -price"). Column) Then Exit Sub End If Dim oadd As Object Set oadd=Application.COMAddIns("ESClient10. Connect"). 0bject '如果已经到了最后一行,则增加一个新行 If r= r2 Then oadd. InsertRow 1, r2, 1 '增加行后,光标定位到新行上 Range("B" &(r + 1)).Select End If '如果输入了单价:就自动复制本行到下一行。 '先判断下一行的物料名称是否为空,为空才复制,否则不复制 If Cells(r + 1,2)=”” Then '考虑到可能由被锁定的单元格的情况,为了复制不出错,先解锁 oadd. UnProtectBook '开始复制 For i=2 To 3 Cells(r + 1,i) = Cells(r, i) Next '复制之后再上锁 oadd. ProtectBook End If End Sub
|