AW: VBA Code - giebt name nicht wieder
01.02.2018 12:51:16
Bernd
Servus Simon,
teste mal:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
'Code der die Nummerierung wiedergibt
If Target.Column = 3 And Target.Row >= 12 Then
'Code der die Nummerierung wiedergibt
Range("B12:B" & Target.Row).FormulaR1C1 = "=IF(RC[1]"""",COUNTA(R12C3:RC3),"""")"
'Code der den Username wiedergibt
Application.EnableEvents = False
Cells(Target.Row, 8).Value = Application.username
Application.EnableEvents = True
End If
End Sub
Nach Eintragung des Datums in Spalte "C" wird automatisch auch der Benutzername eingetragen.
Dein Fehler im ursprünglichen Code war, dass du nur in die Codeausführung einbiegst, wenn in Spalte "C" etwas geändert wird, aber gleichzeitig die Eintragung des Nutzernamens durch eine Änderung der Spalte "B" voraussetzt. Das kann niemals gleichzeitig mit einer Eingabe passieren. Zudem hast du vergessen die erste IF-Abfrage abzuschließen.
Private Sub Worksheet_Change(ByVal Target As Range)
'Code der die Nummerierung wiedergibt
' Hier biegst du ein, wenn Spalte "C" geändert wird...
If Target.Column = 3 And Target.Row >= 12 Then _
Range("B12:B" & Target.Row).FormulaR1C1 = "=IF(RC[1]"""",COUNTA(R12C3:RC3),"""")"
' vergisst aber die If-Abfrage mit "End If" zu schließen
'Code der den Username wiedergibt
If Target.Count > 1 Then Exit Sub
' Hier werden als Eintragskriterien auf einmal die Spalten "B" und Zeilen > 10 festgelegt
If Target.Column = 2 And Target.Row > 10 Then
Application.EnableEvents = False
Cells(Target.Row, 8).Value = Application.username
Application.EnableEvents = True
End If
End Sub
Da Worksheets_Change auf jede Änderung reagiert kann bei dieser Vorgehensweise das Makro nur dann laufen, wenn Spalte "C" bearbeitet wurde. Wenn du Spalte "B" änderst biegst du niemals in die zweite If-Abfrage ein, da die erste nicht abgeschlossen ist.
Grüße, Bernd