Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Undo ? oder zwischenspeichern? oder direkt?

VBA Undo ? oder zwischenspeichern? oder direkt?
09.05.2014 12:07:28
Matze
Hallo Zusammen,
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

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Undo ? oder zwischenspeichern? oder direkt?
09.05.2014 13:29:51
EtoPHG
Hallo Matze,
probier mal:
    If Not Intersect(Target, Range("J10:J40")) Is Nothing Then 'entnahme Mehrarbeit
' Hier sollte noch geprüft werden of Target.Count = 1, da andernfalls der restliche Code  _
failed!
Dim dJVal As Double
If IsEmpty(Target) Then
With Application
.EnableEvents = False
.Undo
dJVal = Val(Target)
With Target.Offset(0, -4)
If Not .Comment Is Nothing Then
.Comment.Delete
.Value = .Value + dJVal
End If
End With
Target.ClearContents
.EnableEvents = True
End With
End If
Gruess Hansueli

Anzeige
Besser Spät wie nie,...
10.05.2014 22:09:17
Matze
Hallo Hansueli, (Gruß in die Schweiz)
...DANKE,...die Zeilen sind schon soweit OK.
Leider hatte dies : dJVal = Val(Target) keinen Erfolg
Habe daraus ein : dJVal = Target.Value gemacht, dies funktioniert.
In der Targetzelle steht eine Uhrzeit , da macht Val mit numerischen Werten nicht mit, wenn ich die Hilfe richtig verstanden habe, da die Uhrzeit durch einen ":" getrennt ist, liest er nur die Zahl(en) davor aus.
Habe mir dann dort noch die zweite Spalte D über eine weitere If Abfrage dazu gebaut.
so bin ich nun zufrieden, danke nochmals für den Denkanstoß.
Gruß Matze
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige