使用macros更新数据

我想要将工作表上logging的数据更新到另一个工作表中的另一个主副本。 我的问题是我如何使这样我可以把工作表上的logging和更新,因为我想要它? 截至目前,我只能更新最后一行,即使我更改代码中的行号。 任何想法为什么和如何解决它?

代码如下

Private Sub CommandButton1_Click() Dim Name As String Dim Problem As Integer Worksheets("Sheet1").Select Name = Range("C4") Problem = Range("D4") Worksheets("Sheet2").Select Worksheets("Sheet2").Range("B4").Select If Worksheets("Sheet2").Range("B4").Offset(1, 0) <> "" Then Worksheets("Sheet2").Range("B4").End(xlDown).Select End If ActiveCell.Offset(1, 0).Select ActiveCell.Value = Name ActiveCell.Offset(0, 1).Select ActiveCell.Value = Problem Worksheets("Sheet1").Select Worksheets("Sheet1").Range("C4").Select End Sub 

工作表1:插入新数据并按更新。 这将发送值到工作表2

在这里输入图像说明

工作表2:数据在这里更新。 我想举个例子,回到这个列表的中间,编辑其中的一个,比如jo的条目。

在这里输入图像说明

现在我明白了 :)

 Private Sub CommandButton1_Click() Dim Name As String Dim Problem As Integer Dim Source As Worksheet, Target As Worksheet Dim ItsAMatch As Boolean Dim i As Integer Set Source = ThisWorkbook.Worksheets("Sheet1") Set Target = ThisWorkbook.Worksheets("Sheet2") Name = Source.Range("B5") Problem = Source.Range("C5") Do Until IsEmpty(Target.Cells(5+i,2)) ' This will loop down through non empty cells from row 5 of column 2 If Target.Cells(5+i,2) = Name Then ItsAMatch = True Target.Cells(5+i,3) = Problem ' This will overwrite your "Problem" value if the name was already in the column Exit Do End If i = i+1 Loop ' This will write new records if the name hasn't been already found If ItsAMatch = False Then Target.Cells(5,2).End(xlDown).Offset(1,0) = Name Target.Cells(5,2).End(xlDown).Offset(0,1) = Problem End If Set Source = Nothing Set Target = Nothing End Sub 

这没有经过testing,但应该工作