(ByVal Target As Range)不使用公式

时间:2015-10-22 11:05:33

标签: excel

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    Range("B" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value =     Range("A1").Value
End If
End Sub

Cell A1具有公式" = C1"例如,当单元格的值发生变化时,它不会被添加到B列中的过去值列表中,但是当手动更改A1时,将添加新值。

Theres山区的示例代码在这里和谷歌解决这个问题,但经过2个小时的试验和错误解决方案,我觉得我别无选择,只能寻求帮助。

我通常可以找到我需要复制的代码部分,但网上的所有示例都是为我详细说明的。

我尽力学习,但愿意为此提供帮助。

2 个答案:

答案 0 :(得分:0)

如果A1引用C1,则测试C1是否已更改:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1")) Is Nothing Then
    Range("B" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("A1").Value
End If
End Sub

答案 1 :(得分:0)

因此,如果您更改的目标的其中一个家属是A1,您需要做出反应。

Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
 On Error GoTo mEnd
 If Not Intersect(Target.Dependents, Me.Range("A1")) Is Nothing Then
  Me.Range("B" & Me.Cells(Me.Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Me.Range("A1").Value
 End If
mEnd:
 Application.EnableEvents = True
End Sub