Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Excel Do-Schleife

VBA-Excel Do-Schleife
02.09.2015 14:36:07
Rolle
Hallo zusammen,
ich bearbeite gerade ein Makro für eine Datenbank.
Das Makro soll wie folgt funktionieren.
Die Bestandsänderung wird in eine definierte Zelle eingetragen.
Daraufhin erscheint eine Messagebox, die abfragt ob die Eingabe korrekt war.
Bei Bestätigung wird der eingetragene Wert mit dem Bestand verrechnet, das Datum aktualisiert und Beides wird in eine Bestands-Historie kopiert.
Der Eintrag in der Historie sucht sich dabei immer die nächste leere Zelle aus.
Soweit funktioniert mein Code auch, jedoch wenn ich nun bei der Messagebox auf Abbrechen drücke bzw. bestätige, dass die Eingabe nicht korrekt war, löscht er zwar die Eingabe aber beendet auch komplett das Makro sprich eine erneute Eingabe ist nicht möglich. Ich vermute es stimmt etwas mit der Do-Schleife nicht aber finde auch nach langem Suchen den Fehler nicht x)
Vielen Dank!
https://www.herber.de/bbs/user/99972.xlsm
Hier der Code:
Do
'leeren der Zelle
If Target [G4] Then Exit Sub
Application.EnableEvents = False
Dim Wert01
Wert01 = Target
'Fenster Bestätigung
Dim Wert As Byte
Wert = MsgBox("Wert speichern?", 1, "Wert speichern")
If Wert = 1 Then GoTo sprungmarke2
If Wert = 2 Then GoTo sprungmarke
sprungmarke2:
'aktueller Bestand
[E4] = Wert01 + [E4]
Target = ""
Application.EnableEvents = True
'aktuelles Datum
[F4] = Date
'Auflistung
i = 4
Range("K4").Select
Do While Not ActiveCell.FormulaR1C1 = ""
i = i + 1
Range("K" & i).Select
Loop
ActiveCell.FormulaR1C1 = [E4]
Range("J" & i).Select
ActiveCell.FormulaR1C1 = Date
sprungmarke:
Range("G4").Select
Exit Do
Loop
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Excel Do-Schleife
02.09.2015 14:53:15
Rudi
Hallo,
wen ich das richtig interpretiere:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$4" Then
If MsgBox("Wert eintragen?", vbYesNo, "Frage") = vbYes Then
On Error GoTo ERREXIT
Application.EnableEvents = False
Range("E4") = Range("E4") + Target
Range("F4") = Date
With Cells(Rows.Count, 10).End(xlUp)
.Offset(1) = Date
.Offset(1, 1) = Range("E4")
End With
End If
Target.ClearContents
Target.Select
End If
ERREXIT:
Application.EnableEvents = True
End Sub

Gruß
Rudi

AW: VBA-Excel Do-Schleife
02.09.2015 15:09:29
Rolle
Schon mal vielen Dank Rudi! Ist schon mal ne effektivere Lösung als meine.
Jedoch erscheint bei deinem Code, sobald ich bei der Messagebox auf Nein drücke die Messagebox immer wieder erneut und verschwindet auch erst wenn ich auf ja drücke.
Ziel sollte sein, dass ich bei Betätigen des Nein-Buttons einen komplett neuen Wert in G4 eintragen kann und Dieser auch dann erst mit dem Bestand verrechnet und in die Historie eingetragen wird, sobald ich ja bei der Messagebox drücke.
Ich stelle mir die Messagebox als eine Art Sicherung vor dem Eintrag vor, einfach um Fehler zu vermeiden.
Gruß Rolle

Anzeige
AW: VBA-Excel Do-Schleife
02.09.2015 15:15:46
Rudi
Hallo,
kleine Korrektur:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$4" Then
On Error GoTo ERREXIT
Application.EnableEvents = False
If MsgBox("Wert eintragen?", vbYesNo, "Frage") = vbYes Then
Range("E4") = Range("E4") + Target
Range("F4") = Date
With Cells(Rows.Count, 10).End(xlUp)
.Offset(1) = Date
.Offset(1, 1) = Range("E4")
End With
End If
Target.ClearContents
Target.Select
End If
ERREXIT:
Application.EnableEvents = True
End Sub

Gruß
Rudi

AW: VBA-Excel Do-Schleife
02.09.2015 15:23:30
Rolle
jaaaaaaa klappt super danke =)
Gruß Rolle
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige