2016-06-19 13 views
2

Ich weiß, wie zu überprüfen, um zu sehen, ob eine Spalte geändert hat, wie soZeilennummer auf Zellenwechsel in VBA Get

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("H5")) Is Nothing Then 
     'Pop up a message saying H5 has changed 
    End If 
End Sub 

Wenn ich eine andere Spalte in derselben Zeile ändern möchten, kann ich diese

tun

Was nun, wenn ich das obige erreichen will, aber für alle Spalten im Bereich von Zeile1 bis zum Ende der Tabelle? So etwas wie diese (beachten Sie, ich weiß, das würde nicht funktionieren)

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("H1:H")) Is Nothing Then 
     Range("A" & Target.row).Value = "Look at me!" 
    End If 
End Sub 

Antwort

5
Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("H:H")) Is Nothing Then 
     Range("A" & Target.row).Value = "Look at me!" 
    End If 
End Sub 

Obwohl Sie sollten beachten, dass Ziel einen mehrzelligen Bereich sein kann, wenn mehr als eine Zelle in der gleichen Operation aktualisiert wird.

Dies kann sicherer sein:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim c As Range 
    For Each c in Target.Cells 
     If Not Intersect(c, Range("H:H")) Is Nothing Then 
      '3 ways to accomplish the update 
      Range("A" & c.Row).Value = "Look at me!" 
      c.EntireRow.Cells(1).Value = "Look at me!" 
      Cells(c.Row, 1).Value = "Look at me!" 
     End If 
    Next c 
End Sub 
+0

Einstellung 'EnableEvents' innen' If' Block sollte die Leistung verbessern. – BrakNicku