我有一個包含兩列(A和B)的工作表...第一個只是一個名稱,第二個是數字。更新單元格,自動將行復制到單獨的工作表
如果我編輯B列中的數字,我希望Excel自動將整行記錄複製到第二個工作表中,以便創建我已編輯的編輯列表。
然後第二個工作表會不斷更新我對第一個工作表所做的更改,並將最新更改(兩個更新列的副本)添加到下一個未使用的行中。
我希望有點VBA的詭計可能能夠做到這一點,但需要一些幫助,使其發生。
我有一個包含兩列(A和B)的工作表...第一個只是一個名稱,第二個是數字。更新單元格,自動將行復制到單獨的工作表
如果我編輯B列中的數字,我希望Excel自動將整行記錄複製到第二個工作表中,以便創建我已編輯的編輯列表。
然後第二個工作表會不斷更新我對第一個工作表所做的更改,並將最新更改(兩個更新列的副本)添加到下一個未使用的行中。
我希望有點VBA的詭計可能能夠做到這一點,但需要一些幫助,使其發生。
試試這個在表,你有數據(在Excel對象下),e.g工作表Sheet1
Option Explicit
Dim PrevVal As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Application.ScreenUpdating = False
Dim rng As Range
Dim copyVal As String
Set rng = Nothing
Set rng = Range("A" & Target.Row & ":B" & Target.Row)
'copy the values
With Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Resize(1, rng.Cells.Count).Value = rng.Value
With Worksheets("Sheet1")
Range("A" & Target.Row).Copy
copyVal = CStr(PrevVal)
End With
.Offset(1, 0).PasteSpecial xlPasteFormats
.Offset(1, 1) = copyVal
Application.CutCopyMode = False
End With
End If
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count > 1 Then Exit Sub
If Target.Columns.Count > 1 Then Exit Sub
PrevVal = Target.Value
End Sub
下面是一些額外的代碼來檢查的行數,按照上面的回答和評論。
Dim row_num As Long
row_num = Cells(Rows.Count, "B").End(xlUp).Row
If row_num > 1 then row_num = row_num + 1 'Add 1 only when row number doesn't equal to 1, otherwise - 1.
謝謝,這工作幾乎完美。我注意到的是,當它將行復制到第二個工作表時,它不是更新的行,而是該行在更新之前的行。這有可能實現嗎?再次感謝您的幫助。 – Andy
所以你只是想要新的條目被複制,而不是舊的或以前的值? – Niclas
我可以看到一個用例,因此知道如何修改代碼以便新條目被複制而不是舊條目會很好。 – Andy