当单元格值更改时,将单元格值更改的列复制到同一范围内的另一个 sheet
When a cell value changes, copy the column from where the cell value changed to another sheet at the same range
例如,如果在 A:A 范围内只有单元格 A8 更改,则复制 D4:D8 并将其作为值粘贴到 sheet "ADP" 中的同一位置,即D4:D8.
为此,我尝试了以下宏
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.range = "A:A" Then
Call copy_paste_as_value
End If
End Sub
Sub copy_paste_as_value()
Range("d4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("ADP").Activate
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C4").Select
Application.CutCopyMode = False
End Sub
我只想复制单元格值发生变化的数据,但它会将整个 table 复制到另一个 sheet。
我的主要问题是找出更改了哪个单元格,并仅从更改了单元格值的列中复制数据。
此处,需要注意的是,只有在范围 A:A 发生变化时才应复制数据,如果不需要复制粘贴以外的任何其他单元格发生变化。
我们将不胜感激任何帮助。
谢谢。
假设相对范围一致,试试这个
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
If Target.Column = 1 And Target.Row > 4 Then
Set r = Target.Offset(-4, 3).Resize(5)
Worksheets("ADP").Range(r.Address).Value = r.Value
End If
End Sub
你可以试试:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsSou As Worksheet, wsDes As Worksheet
'Set the worksheets to avoid conflicts
Set wsSou = Target.Worksheet
Set wsDes = ThisWorkbook.Worksheets("ADP")
If Not Intersect(Target, Range("A:A")) Is Nothing And Target.Count = 1 Then
wsDes.Range(wsDes.Cells(Target.Row, 4), wsDes.Cells(Target.Row, 9)).Value = wsSou.Range(wsSou.Cells(Target.Row, 4), wsSou.Cells(Target.Row, 9)).Value
End If
End Sub
例如,如果在 A:A 范围内只有单元格 A8 更改,则复制 D4:D8 并将其作为值粘贴到 sheet "ADP" 中的同一位置,即D4:D8.
为此,我尝试了以下宏
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.range = "A:A" Then
Call copy_paste_as_value
End If
End Sub
Sub copy_paste_as_value()
Range("d4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("ADP").Activate
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C4").Select
Application.CutCopyMode = False
End Sub
我只想复制单元格值发生变化的数据,但它会将整个 table 复制到另一个 sheet。
我的主要问题是找出更改了哪个单元格,并仅从更改了单元格值的列中复制数据。
此处,需要注意的是,只有在范围 A:A 发生变化时才应复制数据,如果不需要复制粘贴以外的任何其他单元格发生变化。
我们将不胜感激任何帮助。 谢谢。
假设相对范围一致,试试这个
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
If Target.Column = 1 And Target.Row > 4 Then
Set r = Target.Offset(-4, 3).Resize(5)
Worksheets("ADP").Range(r.Address).Value = r.Value
End If
End Sub
你可以试试:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsSou As Worksheet, wsDes As Worksheet
'Set the worksheets to avoid conflicts
Set wsSou = Target.Worksheet
Set wsDes = ThisWorkbook.Worksheets("ADP")
If Not Intersect(Target, Range("A:A")) Is Nothing And Target.Count = 1 Then
wsDes.Range(wsDes.Cells(Target.Row, 4), wsDes.Cells(Target.Row, 9)).Value = wsSou.Range(wsSou.Cells(Target.Row, 4), wsSou.Cells(Target.Row, 9)).Value
End If
End Sub