Ergebnis im Bericht in Formular kopieren

Hallo,
ich möchte anhand eines Buttons „Ja; Nein“ entscheiden, ob der Gesamtbetrag eines Berichtes in das Feld „Betrag“ ins Formular übertragen wird oder nicht.

Die MsgBox erscheint mit dem berechneten Gesamtbetrag. Die Nachfolgende If-Anweisung funzt aber nicht. Es wird nur die 1. If-Anweisung beachtet (die MsgBox wird geschlossen, egal auf welchen Button ich drücke). Tausche ich die Anweisungen, wird wieder nur die erste ausgeführt, der Betrag wird ins Formular übertragen - auch wenn ich auf den Nein-Button klicke.
Die zugrunde liegenden If-Anweisungen für die Öffnung der entsprechenden Formulare und Berichte habe ich mal weggelassen. Anschließend folgt:

Dim Ausgabe As String, Auswahl As Integer, Gesamt As Currency
On Error GoTo Err_btn_Bescheid_Click
Gesamt = Reports!rep_Berech_Erstattung_FG_2_BZFK![Gesamtsumme]
Ausgabe = „Der Gesamtbetrag beträgt " & Gesamt & " €“ & Chr(13) & " Betrag in SchuKo übernehmen?"
Auswahl = MsgBox(Ausgabe, vbYesNo + vbExclamation, „Betrag eintragen?“)
If vbNo Then ???
Close ???
ElseIf vbYes Then ???
Forms!frmA_Pers!frmB_Abr![Betrag] = Gesamt ???
End If
Exit_Err_btn_Bescheid_Click:
Exit Sub

Err_btn_Bescheid_Click:
MsgBox „Angaben nicht vollständig!“ & Chr(13) & „Berechnung konnte nicht durchgeführt werden!“, vbCritical, „SchuKo-Fehlermeldung“

End Sub

Hallo!

Auswahl = MsgBox(Ausgabe, vbYesNo + vbExclamation,
„Betrag eintragen?“)
If vbNo Then
Close
ElseIf vbYes Then
Forms!frmA_Pers!frmB_Abr![Betrag] = Gesamt
End If

Es muss heissen „If Auswahl= vbNo Then…“ und „ElseIf Auswahl=vbYes…“. Ansonsten wird nur geprüft, ob die Konstanten vbNo (enspricht 6) oder vbYes (entspricht 7) wahr oder falsch sind, was natürlich in beiden Fällen „falsch“ ergibt, da es sich um keine Wahrheitswerte (ausschließlich 0 für „falsch“ und -1 für "wahr) handelt.

Gruß, tester!

Hallo,

super, es klappt!
Die Lösung ist so einfach, aber manchmal kommt man einfach nicht drauf!
Danke für die schnelle Antwort.

Es muss heissen „If Auswahl= vbNo Then…“ und „ElseIf
Auswahl=vbYes…“. Ansonsten wird nur geprüft, ob die
Konstanten vbNo (enspricht 6) oder vbYes (entspricht 7) wahr
oder falsch sind, was natürlich in beiden Fällen „falsch“
ergibt, da es sich um keine Wahrheitswerte (ausschließlich 0
für „falsch“ und -1 für "wahr) handelt.

Gruß
Jürgen

Hallo, tester!

Es muss heissen „If Auswahl= vbNo Then…“ und „ElseIf
Auswahl=vbYes…“. Ansonsten wird nur geprüft, ob die
Konstanten vbNo (enspricht 6) oder vbYes (entspricht 7) wahr
oder falsch sind, was natürlich in beiden Fällen „falsch“
ergibt, da es sich um keine Wahrheitswerte (ausschließlich 0
für „falsch“ und -1 für "wahr) handelt.

Ähem, das Problem ist zwar gelöst, aber: VB(A) ist äußerst tolerant was Vergleiche betrifft. Und beim Testen auf einen Wahrheitswert müssen nicht wirklich Wahrheitswerte verglichen werden.

If vbYes Then… liefert genau das gleiche wie If vbNo Then…: Beide Male wird der Then-Teil ausgeführt, denn alles, was eine Zahl und ungleich 0 ist, wird als TRUE interpretiert.

Insofern kann man also, wenn man prüfen möchte, ob zwei Zahlen ungleich 0 sind, statt

If (x0) and (y0) Then …

auch schreiben:

If x*y Then …

Ob das toll ist, sei mal dahingestellt…

Gruß, Manfred