2013-10-03 36 views
0

這個有點複雜,但我覺得可能有一個簡單的方法來完成它。找到最後修改的行,將不同的單元格複製到修改後的行中的另一列

如果列中的單元格發生更改,我正在查找包含該已修改單元格的行,並將另一個表格中的單元格複製到該行中的另一列。

目前,我的代碼將複製另一個工作表上的單元格對列中的更改,但在鼠標單擊時將其粘貼到單元格中。我正在尋找它自動粘貼到命名列(H)。

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Column = 6 And (Target.Row >= 1 And Target.Row <= 10000) Then 

Sheets("Sheet2").Range("B2:B2").Copy 

End If 

Dim lastRow As Long 
With ActiveSheet 
Sheets("Sheet1").Activate 
lastRow = .Cells(.Rows.Count, "F").End(xlUp).Row 
Selection.PasteSpecial xlPasteValues 

End With 

End Sub 
+0

爲什麼不只是存儲的值,然後將其分配給你想要的細胞? Dim str As String str = Sheets(「Sheet2」)。Range(「B2」)。Value ...... = str' – sam092

+0

它不清楚你想要做什麼。你可以用步驟描述你手動做到這一點嗎?例。選擇'A1',從表(2)複製'cell B2'等 – 2013-10-03 08:00:42

+0

謝謝!如果'列F'中的任何單元格在Sheet1中發生變化,那麼我會將Sheet2中單元格B2的值複製到Sheet1中最初更改過的同一行的Sheet1的'H列'中。 – Byate

回答

0

你想要做這樣的事情嗎?

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim val As String 
    val = Sheets("Sheet2").Range("B2").Value 
    If Target.Column = 6 And (Target.Row >= 1 And Target.Row <= 10000) Then 
     'Whatever column 
     Sheets("Sheet1").Range("H" & Target.Row).Value = val 
    End If 
End Sub 

如果是這樣發生您嘗試在F列單元格拖動到的行數,這段代碼不會對所有受影響的行工作。也許你會期待其他任何行爲?

+0

這非常適合我需要做的事情,非常感謝! – Byate

0

你需要的是target.Row

此外,由於使用的是Worksheet_Change,我會建議看THIS鏈接。

久經考驗

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    '~~> If there was a multiple change then exit sub 
    If Target.Cells.CountLarge > 1 Then Exit Sub 

    Application.EnableEvents = False 

    '~~> This is the sheet from where the data needs to be copied 
    Dim sourceWs As Worksheet 
    Set sourceWs = ThisWorkbook.Sheets("Sheet2") 

    '~~> Check if the change happened in Col 6 
    If Not Intersect(Target, Columns(6)) Is Nothing Then 
     '~~> Get the value in Col H 
     Range("H" & Target.Row).Value = sourceWs.Range("B2").Value 
    End If 

Letscontinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume Letscontinue 
End Sub 
相關問題