VBA Undo ? oder zwischenspeichern? oder direkt?
09.05.2014 12:07:28
Matze
ich komme leider nicht klar und brauch mal Unterstützung wie ich das Problem umsetzen kann (hatte erst an ein Zwischenspeichern gedacht ,Art Undo Befehl)
Es geht um die Spalte J(10) in dieser werden Mehrarbeitstunden eingetragen
Wird eine Eingabe gemacht, so wird je nach Eintragungen in Spalte D(4) oder Spalte F(6) ein Kommentar gesetzt, (welcher berechnet ist).
Sollte nun schon eine Eingabe in Spalte J(10) gemacht sein und ich entferne diese müssten nun die Kommentare gelöscht werden und die "Orginalzeit" wieder hergestellt werden.
Musterdatei: https://www.herber.de/bbs/user/90598.xlsm
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strCom As String
Dim strCom2 As String
Dim myCom As Object
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Application.EnableEvents = False
ActiveSheet.Unprotect "matze"
'Teil1
If Not Intersect(Target, Range("H10:I40")) Is Nothing Then
If Target "" Then
Cells(Target.Row, 3).ClearContents
Cells(Target.Row, 4).ClearContents
Cells(Target.Row, 5).ClearContents
Cells(Target.Row, 6).ClearContents
Cells(Target.Row, 7).ClearContents
Cells(Target.Row, 10).ClearContents
End If
End If
'Teil2
If Not Intersect(Target, Range("J10:J40")) Is Nothing Then 'entnahme Mehrarbeit
If Target "" And Cells(Target.Row, 4).Value "" And Cells(Target.Row, 6).Value = "" _
_
Then
Rows(Target.Row).ClearComments 'Kommentare der ganzen Zeile löschen
strCom = Cells(Target.Row, 4).Text
strCom2 = Cells(Target.Row, 10).Text
Set myCom = ActiveSheet.Cells(Target.Row, 4).AddComment 'Kommentar setzen
With myCom 'Eingabe in Kommentar
.Visible = False
.Text Text:="von Arbeitsende " & strCom & "Uhr wurden " & strCom2 & " _
Mehrarbeitsstunden abgezogen"
.Shape.Height = 30
.Shape.Width = 180
End With
Cells(Target.Row, 4).Value = Cells(Target.Row, 4).Value - Cells(Target.Row, 10). _
Value 'Spalte D
End If
If Target "" And Cells(Target.Row, 6).Value "" Then
Rows(Target.Row).ClearComments 'Kommentare der ganzen Zeile löschen
strCom = Cells(Target.Row, 6).Text
strCom2 = Cells(Target.Row, 10).Text
Set myCom = ActiveSheet.Cells(Target.Row, 6).AddComment
With myCom
.Visible = False
.Text Text:="von Arbeitsende " & strCom & "Uhr wurden " & strCom2 & " _
Mehrarbeitsstunden abgezogen"
.Shape.Height = 30
.Shape.Width = 180
End With
Cells(Target.Row, 6).Value = Cells(Target.Row, 6).Value - Cells(Target.Row, 10). _
_
Value
End If
End If
ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Dankend vorab
Gruß Matze