Office: (Office 2003) Word Userform Beträge addieren

Helfe beim Thema Word Userform Beträge addieren in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Moin. Bin in meiner Userform an einem Knackpunkt angelangt: Ich habe u.a. 4 Optionsbutton, in einem Frame zusammengefasst. Hinter jedem OB liegen je... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von office-fragen, 21. März 2019.

  1. Word Userform Beträge addieren


    Moin.

    Bin in meiner Userform an einem Knackpunkt angelangt:

    Ich habe u.a. 4 Optionsbutton, in einem Frame zusammengefasst. Hinter jedem OB liegen je 2 Werte, die abhänging von einer Anzahl ausgewählt werden, d.h., wenn ich in einem Textfeld eine der 2 möglichen Zahlen (hier: 2 bzw. 3) eintrage, wird über die OB der passende Betrag ausgewählt. Dies ist in einzelnen Prozeduren programmiert (je OB eine Prozedur).
    Außerdem wird in einer weiteren Prozedur noch ein 2. Betrag mittels einer With-Anweisung berechnet.
    Beide Ergebnisse werden auch an der richtigen Stelle mit der richtigen Formatierung (hier: "0,00 €") im Word-Dokument eingetragen.

    Wo ich jetzt hänge: ich krieg diese beiden Beträge nicht summiert. Dies soll nach dem Klick auf einen Command-Button geschehen. Habe verschiedenes ausprobiert. Einziges Ergebnis (wieder mittels With-Anweisung, und zwar in der Prozedur des Command-Buttons): Ich bekomme an der entsprechenden Textmarke den Wert "0,00 €" ausgeworfen, aber nicht die gwünschte Summe. Alle Prozeduren hab ich in Public geschrieben, und sogar am Anfang (direkt hinter Option Explicit) die Objekte deklariert, und zwar mit Dim und dann as Double, weil ich ja 2 Nachkommastellen benötige.

    Kann mir jemand helfen? Vielen Dank schonmal.

    Gruß, Torsten
     
    Zuletzt bearbeitet: 21. März 2019
    office-fragen, 21. März 2019
    #1
  2. Gerhard H Erfahrener User
    Hallo Torsten,

    auf blinden Verdacht: Die Textfelder einer Userform liefern Text, und vielleicht musst du den erst mal umwandeln, bevor du damit rechnen kannst, z.B.

    zahl1 = Cdbl(textbox1.text).

    Wenn es das nicht war, zeig bitte den gesamten Code, mit Userform und Word-Dokument. Da fällt das Verständnis, was du eigentlich tust, leichter, und auch die die Suche nach dem Fehler. Und man muss nichts nachbasteln, was deinem Original vielleicht dann doch nicht ganz nahekommt.
     
    Gerhard H, 21. März 2019
    #2
  3. Moin.

    Den ersten Betrag bekomme ich über den Code der Optionsbutton. Dort sind sie im Code hinterlegt. Es erfolgt weder hier nohc beim 2. Betrag (siehe weiter unten) eine Eingabe in einem Textfeld. Daher glaube ich nicht, dass die Umwandlung notwendig ist (und wüsste auch nicht, an welcher Stelle ich diese im Code einbauen sollte.) Hier exemplarisch der Code des ersten OB:
    Public Sub ob6bis8_Click()
    Dim einSumPau
    Set einSumPau = ActiveDocument.Bookmarks("einSumPau")

    If tbEinAnzahl.Value = 2 Then
    With TextM
    einSumPau = 327
    .Textmarke("einSumPau") = format(einSumPau, "#,###0.00 €")
    End With
    Else
    With TextM
    einSumPau = 426
    .Textmarke("einSumPau") = format(einSumPau, "#,###0.00 €")
    End With
    End If
    End Sub.

    Den 2. Betrag erhalte ich durch eine im Code hinterlegte Berechnung. Dieser Code befindet sich in einer eigenen Prozedur:
    Public Sub tbZusEK_Change()
    'Dim einSumZus
    'Set einSumZus = ActiveDocument.Bookmarks("einSumZus")
    -> diese beiden Zeilen hab ich z. Zt. nur als Kommentar drin, die Berechnung und Ausgabe im Dokument funktioniert sowohl mit wie auch ohne!

    If tbZusEK.Value > 0 Then
    With Me
    einSumZus = tbZusEK * tbStdRund * 16.5
    End With
    With TextM
    .Textmarke("einSumZus") = format(einSumZus, "#,###0.00 €")
    End With
    Else
    With Me
    einSumZus = 0
    End With
    With TextM
    .Textmarke("einSumZus") = format(einSumZus, "#,###0.00 €")
    End With
    End If
    End Sub

    Zur Berechnung hab ich es mit diesem Code (wieder in einer anderen Prozedur) versucht:
    With Me
    EinGesamt = einSumPau + einSumZus
    End With

    With TextM
    .Textmarke("einKosten") = format(EinGesamt, "#,###0.00 €")
    .Textmarke("einKosten2") = format(EinGesamt, "#,###0.00 €")
    .Textmarke("einKosten3") = format(EinGesamt, "#,###0.00 €")
    End With.
    Dahinter kommt noch eine Anweisung, deshalb hier kein End Sub.

    Aus "EinGesamt = einSumPau + einSumZus bekomme ich jedoch nur den Betrag aus der 2. Prozedur ("Public Sub tbZusEK_Change()" als Summe angezeigt. Den passenden Betrag aus der 1. Prozedur, also der, der sich aus den Optionsbutton ergibt, findet mein Code nicht bzw. bezieht ihn nicht mit ein.

    Sollte die Datei doch noch benötigt werden, bitte kurz Bescheid sagen, dann lad ich sie hoch.

    Anbei ein Ausschnitt aus meinem Dokument:

    Word Userform Beträge addieren Summe Pauschale.png

    In der Tabelle werden in beiden Spalten in der hintersten Zelle die richtigen Beträge eingetragen. Danach soll im folgenden Text vor dem "." die Summe beider Beträge eingetragen werden.

    Gruß, Torsten
     
    office-fragen, 22. März 2019
    #3
  4. Gerhard H Erfahrener User

    Word Userform Beträge addieren

    Hallo Torsten,

    anhand des von dir preisgegebenen Materials kann ich nur eine weitere Vermutung äußern:

    wenn du die Variablen einSumPau und einSumZus in verschiedenen Prozeduren ermittelst, und in einer von beiden bzw. in noch einer dritten verwurstest, musst du sie als erstes außerhalb, d.h. über allen Prozeduren deklarieren (vorausgesetzt, die Prozeduren stehen alle im gleichen Modul, was ich jetzt einfach mal vermute).
    Variablen, die du innerhalb einer Prozedur deklarierst, sind auch nur dort bekannt. Variablen, die oberhalb aller Prozeduren eines Moduls deklariert sind, sind in jeder Prozedur dieses Moduls bekannt.
    Würdest du mit der Option Explicit arbeiten, würdest du beim Versuch, in der zweiten Prozedur beide Variablenwerte zu addieren, eine Fehlermeldung bekommen, die besagt, dass die Variable einSubPau nicht bekannt ist. Da du leichfertigerweise darauf verzichtest, nimmt sie einfach den Wert 0 an.

    Also mach es so:

    Code:
    Option Explicit
    
    Dim einSumPau 'as Currency
    Dim einSumZus 'as Currency
    
    Public Sub  ob6bis8_Click()
    'hier wird einSumPau ermittelt
    End Sub
    
    Public Sub tbZusEk_Change()
    'hier wird einSumZus ermittelt
    'und hier werden beide Werte addiert
    End Sub
    Die Addition kannst du auch, wenn du magst, in einer dritten Prozedur vornehmen. Die Prozeduren müssen, wenn sie alle im selben Modul stehen, nicht als Public deklariert werden. Da reicht auch Private.

    Die Variablendeklaration als Currency hab ich mal vermutet, da es offenbar um Euro-Beträge geht. Wenn du sie nicht deklarierst, erhältst du Variant-Variablen, was die Sache unnötig unklarer macht.

    Wenn das die Sache nicht löst, lad ein Dokument hoch. Du kannst es ja auf das Wesentliche reduzieren und anonymisieren. Sowas muss man testen können.
     
    Zuletzt bearbeitet: 22. März 2019
    Gerhard H, 22. März 2019
    #4
  5. Moin.

    Die Deklaration hatte ich schon am Anfang, diekt nach Option Explizit, allerdings als Double. Und ja, alles befindet sich in einem Modul, da ich davon ausgehe, dass es alles dahin gehört, weil es ja alles Inhalt der Userform2 ist.

    Ich häng jetz mal die Datei an.
    Den Anhang Bescheid Pauschale Test.2.zip betrachten

    Leider klappt es immernoch nicht richtig, weil nur der Betrag aus der 2. Prozedur übernommen wird....

    Gruß, Torsten
     
    office-fragen, 23. März 2019
    #5
  6. Gerhard H Erfahrener User
    Hallo Torsten,

    es ist auch mit Musterdokument für mich als Außenstehenden schwer, nachzuvollziehen, wann du wo was berechnest.

    Ich finde folgendes grundsätzliche Problem:
    Du hast einSumPau und einSumZus als Currency zwar modulweit über allen Prozeduren deklariert. Allerdings finde ich die Variable einSumPau in den einzelnen "vonBis"-Routinen, z.B. in der Public sub ob6bis8, wieder vor, und zwar diesmal als bookmark deklariert. Das dürfte Chaos geben. Du solltest nicht gleiche Variablennamen für veschieden Sorten von Variablen verwenden.

    Bring das mal in Ordnung, vielleicht löst sich der Fehler dann in Wohlgefallen auf. Ansonsten kann ich dir nur raten, dir Zwischenergebnisse per Messagebox ausgeben zu lassen, damit du lokalisieren kannst, in welcher Routine was schief läuft. Mir fehlt da die Übersicht.

    Nebenbei: Du solltest dich entscheiden, ob du Geldbeträge (einsumPau, einSumZus, EinGesamt) als Currency oder als Double deklarieren willst. Das dürfte zwar nicht fehlerverursachend sein, trägt aber zur weiteren Verwirrung bei.
     
    Gerhard H, 24. März 2019
    #6
  7. Moin.

    Der Tip mit den Deklarationen hat den Knoten gelöst. Das hab ich völlig übersehen, dass ich das noch in den einzelnen Modulen drin stehen hab. Hab ich jetzt rausgenommen, und alles rechnet richtig.

    Auch die Deklararionen am Anfang hab ich einheitlich auf Double gesetzt, um es zu entwirren.Jetzt funktioniert mein Dokument so, wie es soll.

    Vielen Dank nochmal für deine Geduld und Hilfe.

    Gruß, Torsten
     
    office-fragen, 25. März 2019
    #7
Thema:

Word Userform Beträge addieren

Die Seite wird geladen...
  1. Word Userform Beträge addieren - Similar Threads - Word Userform Beträge

  2. Tabellenverzeichnis erstellen - individuelle Formatierung

    in Microsoft Word Hilfe
    Tabellenverzeichnis erstellen - individuelle Formatierung: Hallo zusammen, ich suche nach einer Möglichkeit, mein Tabellenverzeichnis individuell und damit unabhängig von der Formatierung des Abbildungsverzeichnisses zu formatieren. Ich habe das...
  3. Android Office Word mehrere Tabs erstellen

    in Microsoft Word Hilfe
    Android Office Word mehrere Tabs erstellen: Hallo, ich habe gerade Microsoft Office 365 Single auf meinem Android Tablet installiert und habe eine Frage zu Word. Bei der Desktopversion kann man ja mehrere Tabs nebeneinander oder zumindest...
  4. [Word 2016] Userform erstellen und Textmarken füllen

    in Microsoft Word Hilfe
    [Word 2016] Userform erstellen und Textmarken füllen: Hallo, ich brauche bitte eure Hilfe. Ich möchte in Word 2016 eine Datei erstellen, bei der sich beim Starten des Dokuments eine Userform öffnet. Dort soll folgendes enthalten sein: Ich bin auf...
  5. Word Dokument über Excel-Userform im Vordergrund öffnen

    in Microsoft Excel Hilfe
    Word Dokument über Excel-Userform im Vordergrund öffnen: Ein freundliches Hallo an Alle, ich möchte über eine Userform in Excel ein Worddokument öffnen. Es soll vor Excel geöffnet werden, nicht in der Taskleiste abgelegt werden. Hier aus dem Forum und...
  6. VBA: Word-Dokument beim starten unsichtbar machen

    in Microsoft Word Hilfe
    VBA: Word-Dokument beim starten unsichtbar machen: Moin. Schönes neues Jahr wünsche ich allen! Ich möchte, dass beim öffnen einer Datei nur die Userform angezeigt wird, nicht aber das eigentliche Dokument. Dieses soll erst nach Abschluss der...
  7. Word VBA Berechnung mit Userform

    in Microsoft Word Hilfe
    Word VBA Berechnung mit Userform: Moin. Ich habe ein Formular, welches per Userform gefüllt wird. Soweit bin ich auch voran gekommen. Aber jetzt stehe ich vor einem Problem: 1. Ich möchte aus einem Wert aus der Userform...
  8. ausgefüllte Userform-Felder in Word-Dokument einfügen

    in Microsoft Word Hilfe
    ausgefüllte Userform-Felder in Word-Dokument einfügen: Hallo Fachleute, ich bin absoluter Anfänger in Sachen Visual Basic. Trotzdem möchte ich eine DIN A4-Seite mit bestimmten Daten füllen, um sie anschließend auszudrucken. Diese Daten sollen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden