Discussion:
Rechnen in VBA anschliessend in Word Dokument
(zu alt für eine Antwort)
a***@sesamnet.ch
2005-11-12 18:42:52 UTC
Permalink
Hallo miteinander

Ich bin am erstellen einer Vorlage für Rechnungen in Word. Meine
Vorlage sowohl im Word Dokument wie auch in der VBA Userform sieht wie
folgt aus:

Anzahl Artikel Einzelpreis
Total Preis

Davon gibt es bis zu acht Linien wo man Artikel auswählen kann.
Nun meine Frage ist wie kann ich es dem VBA beibringen dass es rechnet
und zwar die vom User eingetragene Zahl im Feld "Anzahl" multipliziert
mit dem Wert im Feld "Einzelpreis".

Gibt es ebenfalls eine möglichkeit so etwas wie ein Total Betrag zu
berechnen aufgrund des Feldes "Total Preis"

Die Namen der Artikell sowie der jeweilige Einzelpreis kommen aus einer
externen .csv Datei welche der Benutzer auswählen kann.

Besten Dank.
a***@sesamnet.ch
2005-11-12 18:47:54 UTC
Permalink
ach ja hab noch vergessen mitzuteilen, ich möchte, dass dies alles auf
dem Userform des VBA geschieht damit ich anschliessend die Felder
mittels replace befehl in ein Word Dokument einfügen kann.
Thomas Gahler
2005-11-12 19:02:40 UTC
Permalink
Hallo andre
Post by a***@sesamnet.ch
und zwar die vom User eingetragene Zahl im Feld "Anzahl" multipliziert
mit dem Wert im Feld "Einzelpreis".
Gibt es ebenfalls eine möglichkeit so etwas wie ein Total Betrag zu
berechnen aufgrund des Feldes "Total Preis"
Die Logik in der UserFoirm musst du manuell programmieren.

Also eine Prozedur anlegen, die beim verlassen eine Feldes oder beim ändern
eines Feldes aufgerufen wird und alle anderen Felder berechnet und deren
Werte einträgt.


BTW. Mit Replace kannst du nichts auf das Dokument eintragen. Dazu ist
.Range.Text zuständig
--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP2), Office XP (SP3)
a***@sesamnet.ch
2005-11-12 19:34:01 UTC
Permalink
hoppla ja natürlich mein Befehl für das Einfügen auf dem Dokument
sieht wie folgt aus:

Selection.Find.Execute "##kunde4##", , , , , , , , , Me.txtKunde4,
wdReplaceAll

dies ist aber nur ein Beispiel aus einem anderen Userform.

Mein Problem ist aber effektiv die ganze Berechnungsarbeit die im
Userform
geschehen soll.
Thomas Gahler
2005-11-12 20:55:51 UTC
Permalink
Hallo andre
Post by a***@sesamnet.ch
hoppla ja natürlich mein Befehl für das Einfügen auf dem
Gib dem Ding einen anderen Namen, es ist nir gut, wenn man reservieret Namen
für eigene Sachen verwendet. DIese Fehler lassen sich sehr schwer finden....
Post by a***@sesamnet.ch
Mein Problem ist aber effektiv die ganze Berechnungsarbeit die im
Userform geschehen soll.
Wie gesagt, musst du selber programmieren.
Benötigst du da Hilfe?
--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP2), Office XP (SP3)
a***@sesamnet.ch
2005-11-12 22:34:21 UTC
Permalink
Ja mit dem rechnen habe ich noch ein kleines Problem, hier ist der
Code den ich verwende zur Berechnung der einzelnen Felder. Das Resultat
wird dann in einem Textfeld im UserForm eingesetzt und von dort kann
ich dann
dieses in mein Word Dokument einfügen.


Private Sub CommandButton2_Click()
txtprix.Text = Format(CCur(txtanzahl.Text) * CCur(txtpreis.Text),
"#####0.00")
txtprix2.Text = Format(CCur(txtanzahl2.Text) *
CCur(txtpreis2.Text), "#####0.00")
txtprix3.Text = Format(CCur(txtanzahl3.Text) *
CCur(txtpreis3.Text), "#####0.00")
txtprix4.Text = Format(CCur(txtanzahl4.Text) *
CCur(txtpreis4.Text), "#####0.00")
txtprix5.Text = Format(CCur(txtanzahl5.Text) *
CCur(txtpreis5.Text), "#####0.00")
txtprix6.Text = Format(CCur(txtanzahl6.Text) *
CCur(txtpreis6.Text), "#####0.00")
txtprix7.Text = Format(CCur(txtanzahl7.Text) *
CCur(txtpreis7.Text), "#####0.00")
txtprix8.Text = Format(CCur(txtanzahl8.Text) *
CCur(txtpreis8.Text), "#####0.00")
End Sub

Jedoch benötige ich noch eine Formel oder besser gesagt einen Befehl
mit welchem
ich die jeweiligen Totalsummen der obigen Felder zusammenrechnen kann.

Wenn ich die nachfolgende Formel verwende, dann erhalte ich den Fehler,
dass die
Typen unverträglich sind.

txtprixtotal.Text = Format(CCur(txtpreis.Text) + CCur(txtpreis2.Text) +
CCur(txtpreis3.Text), "#####0.00")

Gibt's da noch eine andere möglichkeit?
Thomas Gahler
2005-11-13 16:19:35 UTC
Permalink
Hallo andre
Post by a***@sesamnet.ch
Wenn ich die nachfolgende Formel verwende, dann erhalte ich den Fehler,
dass die Typen unverträglich sind.
txtprixtotal.Text = Format(CCur(txtpreis.Text) + CCur(txtpreis2.Text) +
CCur(txtpreis3.Text), "#####0.00")
Jönnte es sein, dass noch gar nicht alle Felder ausgefüllt sind, wenn du die
Berechung durch führst?

Vielleicht noch entsprechende Prüfungen einbauen
- Len(trim$(txtPreis.Tex)) <> 0 'leerers Feld
- IsNumeric(txtPreis.text) ' ist überhaupt eine Zahl drin
--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP2), Office XP (SP3)
a***@sesamnet.ch
2005-11-13 17:44:18 UTC
Permalink
Hallo Thomas

Nun es ist schon so dass zum Teil gewisse Felder nicht ausgefüllt
sind, wenn z.B. nur zwei Linien benötigt werden
bleiben die restlichen sechs leer.

Genau hier scheitert dann meine Berechnung für den Total Betrag sofern
ich alle acht Zeilen ausgefüllt habe klappt's
wenn natürlich nur eine oder zwei Zeilen benötigt werden wird die
Berechnung abgebrochen.

Ich habe jetzt noch ein problem mit dem einfügen deiner Antwort
nämlich mit dem Befehl Len wo genau muss ich den
hinsetzen
Thomas Gahler
2005-11-13 20:16:02 UTC
Permalink
Hallo andre
Post by a***@sesamnet.ch
Ich habe jetzt noch ein problem mit dem einfügen deiner Antwort
nämlich mit dem Befehl Len wo genau muss ich den
hinsetzen
Kann dann ungefähr so aussehen (ungetestet)



Private Sub CommandButton2_Click()
if len(trim$(txtanzahl.Text)) <> 0 and len(trim$(txtpreis.Text)) <> 0
then
if isnumeric(txtanzahl.Text) and isnumeric(txtpreis.Text) then
txtprix.Text = Format(CCur(txtanzahl.Text) * CCur(txtpreis.Text),
"#####0.00")
else
txtprix.Text = "Fehler"
end if
else
txtprix.Text = ""
end if
'und das für alle acht Zeilen machen


'und zum summieren
dim curSumme as currency

if isnumeric(txtprix.Text) then
curSumme = curSumme + txtprix.Text
end if
'und das für alle acht Totale machen
--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP2), Office XP (SP3)
lonestar
2005-11-13 21:08:38 UTC
Permalink
Hallo Thomas

Vielen Dank für deine Hilfe, der erste Teil deiner Code Variante
funktioniert tadellos. Jedoch kapiere ich nicht was mit
dem nachfolgenden Teil bezweckt wird:

dim curSumme as currency

if isnumeric(txtprix.Text) then
curSumme = curSumme + txtprix.Text
end if

Mein Problem besteht nachwievor beim füllen des Feldes "txtprixtotal"
dass ich eine Fehlermeldung
erhalte sofern nicht alle acht Felder ausgefüllt sind.
Thomas Gahler
2005-11-13 22:10:51 UTC
Permalink
Hallo lonestar

He wir sind hier nicht im billigen Chat, richtige Namen werden bevorzugt
Post by lonestar
Vielen Dank für deine Hilfe, der erste Teil deiner Code Variante
funktioniert tadellos. Jedoch kapiere ich nicht was mit
Es wird die Summe (=Total) gebildet, sofern du diesen Block auch für alle
acht Zeilen erstellst


dim curSumme as currency
if isnumeric(txtprix.Text) then
curSumme = curSumme + txtprix.Text
end if
if isnumeric(txtprix2.Text) then
curSumme = curSumme + txtprix2.Text
end if
'usw.
txtprixtotal.text = curSumme
--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP2), Office XP (SP3)
a***@sesamnet.ch
2005-11-14 11:37:07 UTC
Permalink
Hallo Thomas

Vielen herzlichen Dank für deine ganze Hilfe
Ich habe das Total nun noch ein bisschen ergänzt
es sieht nun folgendermassen aus:

txtprixtotal.Text = Format(CCur(curSumme), "####0.00")

Alles funktioniert einwandfrei.. Bin so richtig happy ;-)
Wünsche Dir einen schönen Tag.
btw. das mit dem Namen war ein versehen ich war noch mit einem
anderen Namen eingeloggt.

a***@sesamnet.ch
2005-11-12 23:02:24 UTC
Permalink
ja habe noch ein kleineres Problem bei der Berechnung:
Die einzelnen Linien werden mit dem nachfolgenden Befehl berechnet und
die
Berechneten Resultate werden dann in die TextBox Felder eingefüllt
wonit ich
dann ebenfalls mein Word Dokument füllen kann.

Private Sub calculation_Click()
txtprix.Text = Format(CCur(txtanzahl.Text) * CCur(txtpreis.Text),
"#####0.00")
txtprix2.Text = Format(CCur(txtanzahl2.Text) *
CCur(txtpreis2.Text), "#####0.00")
txtprix3.Text = Format(CCur(txtanzahl3.Text) *
CCur(txtpreis3.Text), "#####0.00")
txtprix4.Text = Format(CCur(txtanzahl4.Text) *
CCur(txtpreis4.Text), "#####0.00")
txtprix5.Text = Format(CCur(txtanzahl5.Text) *
CCur(txtpreis5.Text), "#####0.00")
txtprix6.Text = Format(CCur(txtanzahl6.Text) *
CCur(txtpreis6.Text), "#####0.00")
txtprix7.Text = Format(CCur(txtanzahl7.Text) *
CCur(txtpreis7.Text), "#####0.00")
txtprix8.Text = Format(CCur(txtanzahl8.Text) *
CCur(txtpreis8.Text), "#####0.00")
End Sub

Mein Problem besteht jetzt aber noch dass ich ein Feld benötige in
welches mir das VBA
die Totalsumme der einzelnen Felder zusammenzählt.
Wenn ich die obige Formel verwende und dass zeichen multiplizieren mit
dem addieren ersetze erhalte ich eine Fehlermeldung beim Debuggen, dass
die Typen unverträglich sind. Gibt es noch andere möglichkeiten die
Felder im Userform zusammen zu addieren ?
Loading...