DrMinzlauer
New Member
- Joined
- May 26, 2023
- Messages
- 6
- Platform
- Windows
Hallo Zusammen,
ich musste für die Arbeit ein Makro programmieren, dieses funktioniert einzeln auch.
Nun habe ich das Problem, dass in dem Excel schon ein anderes Makro mit "Worksheet_Change" existiert, welches nicht von mir ist und mir die Funktion nicht bekannt ist.
Wenn ich Beispielsweise mein 2tes makro mit "Worksheet_SelectionChange" ausführe funktioniert alles.
Allerdings wäre Worksheet_Change deutlich besser und Slection Change ist nicht optimal.
Was muss ich tun um beide Makros in einem Worksheet ausführen zu können?
Kurze erklärung was Makro 2 macht:
Immer wenn ein neuer Name in Spalte E auftaucht, soll Excel das Datum aus Spalte C überprüfen und wenn der Name das erste Mal in einer Kalenderwoche notiert wurde,
soll eine automatische Nachricht in Spalte J geschrieben werden.
ich musste für die Arbeit ein Makro programmieren, dieses funktioniert einzeln auch.
Nun habe ich das Problem, dass in dem Excel schon ein anderes Makro mit "Worksheet_Change" existiert, welches nicht von mir ist und mir die Funktion nicht bekannt ist.
Wenn ich Beispielsweise mein 2tes makro mit "Worksheet_SelectionChange" ausführe funktioniert alles.
Allerdings wäre Worksheet_Change deutlich besser und Slection Change ist nicht optimal.
Was muss ich tun um beide Makros in einem Worksheet ausführen zu können?
Kurze erklärung was Makro 2 macht:
Immer wenn ein neuer Name in Spalte E auftaucht, soll Excel das Datum aus Spalte C überprüfen und wenn der Name das erste Mal in einer Kalenderwoche notiert wurde,
soll eine automatische Nachricht in Spalte J geschrieben werden.
Private Sub Worksheet_Change(ByVal Target As Range)
Set NewTarget = Intersect(Target, Range("A:A"))
If NewTarget Is Nothing Then
Set NewTarget = Intersect(Target, Range("L:L"))
If NewTarget Is Nothing Then Exit Sub
Cells(Target.Row, "M") = Now
Exit Sub
End If
If Cells(Target.Row, "A").Value <> "" Then
Cells(Target.Row, "C") = Now
Cells(Target.Row, "D") = Now
Else
Cells(Target.Row, "C") = ""
Cells(Target.Row, "D") = ""
End If
End Sub
'Rauheit muss geprüft werden
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LastRow As Long
Dim i As Long
Dim Name As String
Dim Week As Integer
Dim FirstDate As Date
Dim Found As Boolean
' Überprüfen, ob Änderungen in Spalte E vorgenommen wurden
If Target.Column <> 5 Then Exit Sub
' Letzte Zeile in Spalte E finden
LastRow = Cells(Rows.Count, "E").End(xlUp).Row
' Für jede neue Zeile in Spalte E
For i = Target.Row To LastRow
' Name in Spalte E
Name = Cells(i, "E").Value
' Datum in Spalte C
FirstDate = Cells(i, "C").Value
' Kalenderwoche des Datums
Week = Format(FirstDate, "ww")
' Überprüfen, ob der Name bereits in dieser Kalenderwoche aufgetaucht ist
Found = False
For j = 10 To i - 1
If Cells(j, "E").Value = Name And Format(Cells(j, "C").Value, "ww") = Week Then
Found = True
Exit For
End If
Next j
' Wenn der Name das erste Mal in dieser Kalenderwoche aufgetaucht ist
If Not Found Then
' Nachricht in Spalte J schreiben
Cells(i, "J").Value = "nötig "
End If
Next i
End Sub