Excel VBA在删除行之前复制行
Excel VBA在删除行之前复制行,excel,vba,Excel,Vba,我需要为Excel工作表中的更改创建类似日志的内容 例如,我有以下列表: 1.a b c 2.def 3.hij 当我删除第二行时,我需要将其数据复制到其他工作表中,因此我的第一个列表如下所示: 1.a b c 3.hij 第二个: 2.def 现在我使用以下代码: Private usedRowsCount As Long Private Sub Worksheet_SelectionChange(ByVal Target As Range) usedRowsCount = Target
我需要为Excel工作表中的更改创建类似日志的内容 例如,我有以下列表:
1.a b c
2.def
3.hij
当我删除第二行时,我需要将其数据复制到其他工作表中,因此我的第一个列表如下所示:
1.a b c
3.hij
第二个:
2.def
现在我使用以下代码:
Private usedRowsCount As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
usedRowsCount = Target.Worksheet.UsedRange.Rows.Count
End Sub
Sub Worksheet_Change(ByVal Target As Range)
If usedRowsCount < Target.Worksheet.UsedRange.Rows.Count Then
Debug.Print "Row Added: ", Target.Address
ElseIf usedRowsCount > Target.Worksheet.UsedRange.Rows.Count Then
Worksheets("Sheet1").Range("A2:L2").Value = Target.Value ' here it inserts values of shifted up row. I need to get values of deleted row(s)
Debug.Print "Row deleted: ", Target.Address
End If
End Sub
Private usedRowsCount尽可能长
专用子工作表\u选择更改(ByVal目标作为范围)
usedRowsCount=Target.Worksheet.UsedRange.Rows.Count
端接头
子工作表_变更(ByVal目标作为范围)
如果usedRowsCountTarget.Worksheet.UsedRange.Rows.Count然后
工作表(“Sheet1”).Range(“A2:L2”).Value=Target.Value”在此插入上移行的值。我需要获取已删除行的值
调试.打印“删除行:”,目标.地址
如果结束
端接头
但它复制的不是已删除的行数据,而是已删除行下的行数据。示例列表:
1.a b c
3.hij
表1中复制的行数据:
3.HI j----不是预期的“2.d e f” 有什么建议吗
谢谢大家! 也许这对你有用,但不能保证它能涵盖所有情况 您可能需要调整以适应您的精确设置
Private usedRowsCount As Long, v As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
usedRowsCount = Target.Worksheet.UsedRange.Rows.Count
v = Selection.Resize(, 3).Value 'columns A-C of selected row
End Sub
Sub Worksheet_Change(ByVal Target As Range)
If usedRowsCount < Target.Worksheet.UsedRange.Rows.Count Then
Debug.Print "Row Added: ", Target.Address
ElseIf usedRowsCount > Target.Worksheet.UsedRange.Rows.Count Then
Worksheets("Sheet2").Range("A2").Resize(, 3).Value = v
Debug.Print "Row deleted: ", Target.Address
End If
End Sub
Private usedRowsCount作为长,v作为变量
专用子工作表\u选择更改(ByVal目标作为范围)
usedRowsCount=Target.Worksheet.UsedRange.Rows.Count
v=选择。调整选定行A-C列的大小(,3)。值
端接头
子工作表_变更(ByVal目标作为范围)
如果usedRowsCountTarget.Worksheet.UsedRange.Rows.Count然后
工作表(“Sheet2”)。范围(“A2”)。调整大小(,3)。值=v
调试.打印“删除行:”,目标.地址
如果结束
端接头
如果单元格不再存在,则无法复制单元格。您需要先捕获已删除单元格的内容,然后再将其删除。我甚至不确定这是否可能。