2017-12-17 2 views
0

Ich versuche, einen Zeitstempel in Spalte B zu erhalten, wenn ich Text in Spalte A und einen separaten Zeitstempel in Spalte D eingeben, wenn ich Text in Spalten C eingebenVBA 2 Zeitstempel in demselben Excel-Blatt

Ich habe dies gefunden VBA-Code, der perfekt für 1 Zeitstempel funktioniert, aber ich würde Hilfe benötigen, um es mit 2 separaten Zeitmarken innerhalb desselben Blattes gültig zu machen.

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim xCellColumn As Integer 
Dim xTimeColumn As Integer 
Dim xRow, xCol As Integer 
xCellColumn = 1 
xTimeColumn = 2 
xRow = Target.Row 
xCol = Target.Column 
If Target.Text <> "" Then 
    If xCol = xCellColumn Then 
     Cells(xRow, xTimeColumn) = Now() 
    End If 
End If 
End Sub 

Antwort

0

Ist dies tun, was Sie wollen?

Private Sub Worksheet_Change(ByVal Target As Range) 

Application.enableevents = false 

If Target.Text <> "" Then 

Select case Target.Column 
Case 1, 3 ' columns A and C for now, add more as needed.' 
Cells(target.row, target.column + 1) = Now() ' +1 as column with timestamp always seems to be 1 column to the right of the newly entered value' 
End select 

End If 
Application.enableevents = true 

End Sub 

Der obige Code bezieht sich implizit auf ActiveSheet. Der Zeitstempel wird auf jedem Blatt, das aktiv ist, eingegeben. Erwägen Sie, die Arbeitsmappe und das Arbeitsblatt vollständig zu qualifizieren.

+0

FWIW - die unqualifizierten 'Cells' in diesem Code beziehen sich standardmäßig nicht auf' ActiveSheet' - es bezieht sich auf das Blatt, in dem sich der Code befindet, so dass es keine Probleme geben sollte. – YowE3K

+0

Vielen Dank! Es funktioniert Wunder – Jonathan

0

Die Offset Eigenschaft ist dein Freund:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Text <> "" Then 
     'Check if column A or C was updated 
     If Target.Column = 1 Or Target.Column = 3 Then 
      'Disable events to stop recursive calls 
      Application.EnableEvents = False 
      'Place the date one column to the right 
      Target.Offset(, 1).Value = Now() 
      'Re-enable events 
      Application.EnableEvents = False 
     End If 
    End If 
End Sub 
+0

Danke YowE3K! Beide Codes funktionieren, ihr Jungs rockt! – Jonathan

Verwandte Themen