Registriert seit: 02.02.2017
Version(en): 10
06.02.2017, 08:35
(Dieser Beitrag wurde zuletzt bearbeitet: 06.02.2017, 08:48 von mazor78.)
Hallo,
Bin neu hier im Forum.
Wer könnte mir helfen die beiden Codes zusammenzulegen ?
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("E4:E1048576")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, -1).ClearContents
Else:
Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy"))
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsEmpty(Target) Then Exit Sub
If Intersect(Target, Range("B4:H1048576")) _
Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Target = UCase(Target)
ERRORHANDLER:
Application.EnableEvents = True
End Sub
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo,
ungetestet:
Code: Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("E4:E1048576")) or Intersect(Target, Range("B4:H1048576")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
Application.EnableEvents = False
If Target.Column=5 then
If Target = "" Then
Target.Offset(0, -1).ClearContents
Else:
Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy"))
else
Target = UCase(Target)
End If
Application.EnableEvents = true
end if
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
wenn in Spalte E auch groß geschrieben werden soll, dann so:
Code: Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B4:H1048576")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
Application.EnableEvents = False
If Target.Column = 5 Then
If Target = "" Then
Target.Offset(0, -1).ClearContents
Else
Target = UCase(Target)
Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy"))
End If
Else
Target = UCase(Target)
End If
Application.EnableEvents = True
End Sub
@Edgar
Du musst nacharbeiten. Da sind noch einige Fehler drin
Is Nothing muss vor Or noch mal
Das Or muss ein And sein, sonst wirkt der Code nur in spalte E
ein End IF fehlt
Application.EnableEvents = true muss außerhalb der IF Abfrage
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• mazor78
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
06.02.2017, 09:24
(Dieser Beitrag wurde zuletzt bearbeitet: 06.02.2017, 09:28 von Kuwer.)
Hallo mazor78,
ich habe alle Exit Sub entfernt, da sie aus eben diesem Grund, dass es jeweils nur ein Ereignismakro gibt, in Ereignismakros nichts verloren haben.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, Range("E4:E1048576")) Is Nothing Then
If Target.Count = 1 Then 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, -1) = ""
Else
Target.Offset(0, -1) = Now
End If
End If
End If
If Not Intersect(Target, Range("B4:H1048576")) Is Nothing Then
If Target.Count = 1 Then 'Bearbeiten mehrerer Zeilen wird abgefangen
If Not IsEmpty(Target) Then
Target = UCase(Target)
End If
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• mazor78
Registriert seit: 13.04.2014
Version(en): 365, 2019
06.02.2017, 09:27
(Dieser Beitrag wurde zuletzt bearbeitet: 06.02.2017, 09:27 von BoskoBiati.)
Hi atilla,
ok, akzeptiert.
@Uwe,
was spricht dagegen, aus dem Makro auszusteigen, wenn die Änderung nicht im festgelegten Bereich stattfindet? Soweit ich weiß, ist das gängiger Programmierstil.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hi Edgar,
(06.02.2017, 09:27)BoskoBiati schrieb: was spricht dagegen, aus dem Makro auszusteigen, wenn die Änderung nicht im festgelegten Bereich stattfindet? schrieb ich eins drüber.
(06.02.2017, 09:27)BoskoBiati schrieb: Soweit ich weiß, ist das gängiger Programmierstil. Mit Sicherheit nicht bei Programmierern, die wissen was sie tun, denn sie verbauen/erschweren sich nicht absichtlich jedwede Änderungs-/Erweiterungsmöglichkeit.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• mazor78
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo zusammen,
dann würde ich meinen Code so zusammenfassen:
Code: Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, Range("B4:H1048576")) Is Nothing Then
If Target.Count = 1 Then 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target.Column = 5 Then
If Target = "" Then
Target.Offset(0, -1) = ""
Else
Target = UCase(Target)
Target.Offset(0, -1) = CDate(Format(Date, "dd.mm.yyyy"))
End If
Else
If Not IsEmpty(Target) Then
Target = UCase(Target)
End If
End If
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
man könnte noch über On Error Resume Next diskutieren, tun wir aber nicht.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• mazor78
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Atilla,
ja für diesen speziellen Fall passt es gut. Wäre jetzt aber der eine Bereich statt Range("E4:E1048576")) z.B. Range("L4:L1048576"))?
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• mazor78
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Uwe,
hab heute aufgepasst, nachdem ich gestern einen auf den Deckel bekommen habe.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• mazor78
Registriert seit: 02.02.2017
Version(en): 10
07.02.2017, 06:45
Klappt !
Super Vielen Dank ! :19:
|