2013-10-03 35 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 
相关问题