VBA rechung erstellen

Moderator: ModerationP

VBA rechung erstellen

Beitragvon tony4364634634 » 07. Dez 2017, 12:53

Halo leute habe ine kleines problem bei meinem code.
tony4364634634
 

Re: VBA rechung erstellen

Beitragvon Gast » 07. Dez 2017, 12:54

tony4364634634 hat geschrieben:Halo leute habe ine kleines problem bei meinem code.


Option Explicit

Private Sub cmdBerechnen_Click()
Dim intEinzelbetrag As Double
Dim intRechnungsbetrag As Integer
Dim intAnzahl As Integer
Dim strProdukt As String
Dim strDateiName As String
Dim strDateiNameNeu As String
Dim strAnredeA As String
Dim strNachname As String
Dim strVorname As String
Dim intMwStkeine As Integer
Dim intMwSt7 As Integer
Dim intMwSt16 As Integer

intRechnungsbetrag = intEinzelbetrag * intAnzahl

With Me
intEinzelbetrag = .txtEinzelbetrag
intRechnungsbetrag = .txtRechnungsbetrag
strProdukt = .cboProdukt
intAnzahl = .Int(txtAnzahl)
strNachname = .txtName
strVorname = .txtVorname
intMwSt16 = .optMwSt16
intMwSt7 = .optMwSt7
intMwStkeine = .optMwStkeine



If .optmaenlich.Value = True Then
strAnredeA = "r Herr "
Else
strAnredeA = " Frau "
End If
If .optMwStkeine.Value = True Then
intRechnungsbetrag = intRechnungsbetrag
End If
If .optMwSt7.Value = True Then
intRechnungsbetrag = intRechnungsbetrag * 107 / 100
End If
If .optMwSt16.Value = True Then
intRechnungsbetrag = intRechnungsbetrag * 116 / 100
End If
If .chkProf.Value Then
strAnredeA = strAnredeA & "Prof. "
End If
If .chkDr.Value Then
strAnredeA = strAnredeA & "Dr. "
End If


End With



End Sub
Private Sub cmdDrucken_Click()
Dim strDateiNameNeu As String


strDateiName = "c:\Uebung\text\Rechnung\Rechnung.doc"
strDateiNameNeu = "C:\Uebung\text\Rechnung\Rechnung2"

Documents.Open FileName:=strDateiName, ReadOnly:=True

Documents.Add Template:=strDateiName

With Selection
.HomeKey Unit:=wdStory
.TypeText "Blumenversand Müller"
.TypeParagraph
.TypeText "Landstr.5"
.TypeParagraph
.TypeParagraph
.TypeText "12345 Musterstadt"
.TypeParagraph
.TypeParagraph
End With

If ActiveDocument.Bookmarks.Exists("MarkeAnrede") Then
With Selection
.GoTo what:=wdGoToBookmark, Name:="MarkeAnrede"
.TypeText "Sehr geehrte" & strAnredeA & strVorname & " " & strNachname
End With
Else
MsgBox "MarkeAnrede" & " " & "nicht vorhanden"
End If

If ActiveDocument.Bookmarks.Exists("MarkeProdukt") Then
With Selection
.GoTo what:=wdGoToBookmark, Name:="MarkeProdukt"
.TypeText cboProdukt
End With
Else
MsgBox "MarkeProdukt" & " " & "nicht vorhanden"
End If


If ActiveDocument.Bookmarks.Exists("MarkeAnzahl") Then
With Selection
.GoTo what:=wdGoToBookmark, Name:="MarkeAnzahl"
.TypeText txtAnzahl & " " & " Stk."
End With
Else
MsgBox "MarkeAnzahl" & " " & "nicht vorhanden"
End If

If ActiveDocument.Bookmarks.Exists("MarkeEinzelbetrag") Then
With Selection
.GoTo what:=wdGoToBookmark, Name:="MarkeEinzelbetrag"
.TypeText Format$(intEinzelbetrag, "#,##0.00") & " " & "Euro"
End With
Else
MsgBox "MarkeEinzelbetrag" & " " & "nicht vorhanden"
End If

If ActiveDocument.Bookmarks.Exists("MarkeGesamtbetrag") Then
With Selection
.GoTo what:=wdGoToBookmark, Name:="MarkeGesamtbetrag"
.TypeText Format$(intRechnungsbetrag, "#,##0.00") & " " & "Euro"
End With
Else
MsgBox "MarkeGesamtbetrag" & " " & "nicht vorhanden"
End If

If ActiveDocument.Bookmarks.Exists("MarkeMwSt") Then
With Selection
.GoTo what:=wdGoToBookmark, Name:="MarkeMwSt"

If optMwStkeine.Value = True Then
.TypeText "keine MwSt"
End If

If optMwSt7.Value = True Then
.TypeText "7% MwSt"
End If

If optMwSt16.Value = True Then
.TypeText "16% MwSt"
End If
End With
Else
MsgBox "MarkeMwSt" & " " & "nicht vorhanden"
End If
With ActiveDocument
.PrintOut
.SaveAs FileName:="C:\Uebung\text\Rechnung\Blumenhandel Mustermann"
.Close
End With
End Sub
Private Sub UserForm_Initialize()
With cboProdukt
.AddItem "Nelken"
.AddItem "Rosen"
.AddItem "Gerbera"
.AddItem "Tulpen"
.AddItem "Sonnenblumen"
End With
End Sub

Private Sub cboProdukt_change()

Dim intEinzelbetrag As Integer

Select Case cboProdukt.ListIndex

Case Is = 0
txtEinzelbetrag = "2,00"
Case Is = 1
txtEinzelbetrag = "3,00"
Case Is = 2
txtEinzelbetrag = "2,50"
Case Is = 3
txtEinzelbetrag = "1,50"
Case Is = 4
txtEinzelbetrag = "5,00"
End Select

End Sub


Private Sub cmdEnde_Click()
Unload Me
End Sub



ALso irgendwie funktioniert das nicht richtig kann mir wer weiter helfen ?? Bittte DAnke
Gast
 

Re: VBA rechung erstellen

Beitragvon theoS » 07. Dez 2017, 13:55

ALso irgendwie funktioniert das nicht richtig kann mir wer weiter helfen ?? Bittte DAnke

1. Was funktioniert nicht?
2. Dein code ist so fast unlesbar, verwende bitte Code-Tags
3. Ein Probedok ist nützlich, melde dich an dann kannst du eins hochladen.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3687
Registriert: 19. Apr 2008, 00:14

Re: VBA rechung erstellen

Beitragvon tony62392 » 07. Dez 2017, 14:06

Also die Berechung bzw der Code dafür geht nicht.. und es steckt noch ein fehler für die ausleung der textmarken in einem neues document.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
tony62392
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 07. Dez 2017, 13:56

Re: VBA rechung erstellen

Beitragvon theoS » 07. Dez 2017, 15:15

was überprüfst du hier?
Code: Alles auswählen
 
    If sngEinzelbetrag = True Then
    strEinzelbetrag = "2,00€"
   
    End If
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3687
Registriert: 19. Apr 2008, 00:14

Re: VBA rechung erstellen

Beitragvon Gast » 07. Dez 2017, 15:26

ja ich dachte das ist richtig für die ausgabe der berechnung von den einzelen blumen sorten ..also hab ich das falsch geschrieben ?
Gast
 

Re: VBA rechung erstellen

Beitragvon tony62392 » 07. Dez 2017, 15:37

ich muss folgende bedinungen codieren:

    über ein kombifeld sollen einige produkte ausgewählt ,oder auch neue angaben gemacht werden können.
    über drei optionsfelder sollen mwst bestimmt werden
    wurde keine stückzahl angegeben dann soll eine fehlermeldung kommen
    produkt soll mit der anzahl der stückzahl multiplziert werden und im feld rechungsbetrag ausgegeben werden
    im text müssen über textmarken a: Name mit Titel, b: Anzahl und das Produkt, c: der Rechungsbetrag
    ausgegeben werden
tony62392
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 07. Dez 2017, 13:56

Re: VBA rechung erstellen

Beitragvon theoS » 07. Dez 2017, 17:33

Naja, das geht schon so, aber du machst mit dieser Überprüfung ja keine Überprüfung ob das Feld leer ist.
Kannst das hier mal versuchen:
Code: Alles auswählen
Private Sub txtEinzelbetrag_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Die Dinger hier überprüfen ob sich in der Textbox eine Zahl befindent
 If Not IsNumeric(Me.txtEinzelbetrag.Value) Then
 Me.txtEinzelbetrag.Value = ""
 Me.txtEinzelbetrag.BackColor = &HFF& 'ist es keine Zahl wird das Feld rot
 Else
Me.txtEinzelbetrag.BackColor = &H80000005
End If
End Sub

Private Sub txtStückzahl_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 If Not IsNumeric(Me.txtStückzahl.Value) Then
 Me.txtStückzahl.Value = ""
 Me.txtStückzahl.BackColor = &HFF&
 Else
Me.txtStückzahl.BackColor = &H80000005
End If
End Sub



Private Sub UserForm_Initialize()

With Me
.txtEinzelbetrag.BackColor = &H80000005 'setzt die Farbe der Textboxen zurück
.txtStückzahl.BackColor = &H80000005  'setzt die Farbe der Textboxen zurück
.optMwSt19.GroupName = "MWSTgroup" 'damit ordnest du deine Radiobuttons einer Gruppe zu
.optMwSt19.Value = True  'setzt den 19% auf angemarkert
.optMwSt7.GroupName = "MWSTgroup" 'die Gruppe ist dazu, dass immer nur 1 angehakt ist
.optMwStkeine.GroupName = "MWSTgroup"
End With
With cboProdukt

    .AddItem "Nelken"
    .AddItem "Rosen"
    .AddItem "Gerbera"
    .AddItem "Tulpen"
    .AddItem "Sonnenblumen"
   
    End With
   
End Sub

Private Sub cmdberechnen_Click()
'Variablen Deklaration'

Dim strProdukt As String
Dim lngStückzahl As Long  'hab dir die Dinger umdeklariert, du rechnest ja, also wozu string?
Dim sngEinzelbetrag As Currency
Dim curRechnungsbetrag As Currency
Dim dblMehrwertsteuer As Double




With Me
    strProdukt = .cboProdukt
    lngStückzahl = CLng(Val(.txtStückzahl)) ' du willst ja keine halben Blumen
    sngEinzelbetrag = CCur(Val(.txtEinzelbetrag)) 'gleich in einen Betrag umwandeln


    If optMwStkeine = True Then
        dblMehrwertsteuer = 1
    ElseIf optMwSt7 = True Then
        dblMehrwertsteuer = 1.07
    ElseIf optMwSt19 = True Then
        dblMehrwertsteuer = 1.19

    End If

curRechnungsbetrag = sngEinzelbetrag * lngStückzahl * dblMehrwertsteuer
.txtRechnungsbetrag = curRechnungsbetrag
End With

End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3687
Registriert: 19. Apr 2008, 00:14

Re: VBA rechung erstellen

Beitragvon tony62392 » 08. Dez 2017, 10:06

theoS hat geschrieben:Naja, das geht schon so, aber du machst mit dieser Überprüfung ja keine Überprüfung ob das Feld leer ist.
Kannst das hier mal versuchen:
Code: Alles auswählen
Private Sub txtEinzelbetrag_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Die Dinger hier überprüfen ob sich in der Textbox eine Zahl befindent
 If Not IsNumeric(Me.txtEinzelbetrag.Value) Then
 Me.txtEinzelbetrag.Value = ""
 Me.txtEinzelbetrag.BackColor = &HFF& 'ist es keine Zahl wird das Feld rot
 Else
Me.txtEinzelbetrag.BackColor = &H80000005
End If
End Sub

Private Sub txtStückzahl_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 If Not IsNumeric(Me.txtStückzahl.Value) Then
 Me.txtStückzahl.Value = ""
 Me.txtStückzahl.BackColor = &HFF&
 Else
Me.txtStückzahl.BackColor = &H80000005
End If
End Sub



Private Sub UserForm_Initialize()

With Me
.txtEinzelbetrag.BackColor = &H80000005 'setzt die Farbe der Textboxen zurück
.txtStückzahl.BackColor = &H80000005  'setzt die Farbe der Textboxen zurück
.optMwSt19.GroupName = "MWSTgroup" 'damit ordnest du deine Radiobuttons einer Gruppe zu
.optMwSt19.Value = True  'setzt den 19% auf angemarkert
.optMwSt7.GroupName = "MWSTgroup" 'die Gruppe ist dazu, dass immer nur 1 angehakt ist
.optMwStkeine.GroupName = "MWSTgroup"
End With
With cboProdukt

    .AddItem "Nelken"
    .AddItem "Rosen"
    .AddItem "Gerbera"
    .AddItem "Tulpen"
    .AddItem "Sonnenblumen"
   
    End With
   
End Sub

Private Sub cmdberechnen_Click()
'Variablen Deklaration'

Dim strProdukt As String
Dim lngStückzahl As Long  'hab dir die Dinger umdeklariert, du rechnest ja, also wozu string?
Dim sngEinzelbetrag As Currency
Dim curRechnungsbetrag As Currency
Dim dblMehrwertsteuer As Double




With Me
    strProdukt = .cboProdukt
    lngStückzahl = CLng(Val(.txtStückzahl)) ' du willst ja keine halben Blumen
    sngEinzelbetrag = CCur(Val(.txtEinzelbetrag)) 'gleich in einen Betrag umwandeln


    If optMwStkeine = True Then
        dblMehrwertsteuer = 1
    ElseIf optMwSt7 = True Then
        dblMehrwertsteuer = 1.07
    ElseIf optMwSt19 = True Then
        dblMehrwertsteuer = 1.19

    End If

curRechnungsbetrag = sngEinzelbetrag * lngStückzahl * dblMehrwertsteuer
.txtRechnungsbetrag = curRechnungsbetrag
End With

End Sub




Vielen Danke erstmals...das Problem ist jetzt nur das die Blumensorten verschiedene Preise haben, "und wenn keine Stückzahl angegeben wird muss eine Fehlermeldung erscheinen, und falls kein vorgegebenes Produkt ausgewählt ist und ein neuer Produktname angegeben wurde so gilt der Stückpreis , der in das Feld Einzelbetrag eingegeben wird." Also das bekomm ich nicht auf die reihe.
tony62392
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 07. Dez 2017, 13:56

Re: VBA rechung erstellen

Beitragvon theoS » 08. Dez 2017, 13:15

Jetzt verzweifle nicht, mach dir lieber erst mal einen Plan, was der Reihe nach passieren soll
Aus deinen Beschreibungen werde ich nämlich momentan überhaupt nicht schlau.

Also: Was passiert, wenn du eine Blumensorte wählst. Schritt für Schritt. Und erst mal nur der Normalfall.
Dann was passieren soll, wenn Fall x auftritt, solange bis du auf deinem Blatt Papier alles durch hast.
Dann melde dich noch mal.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3687
Registriert: 19. Apr 2008, 00:14

Re: VBA rechung erstellen

Beitragvon tony62392 » 09. Dez 2017, 10:22

Über zwei optionsfelder wird die anrede männlihc oder weiblich gesteuert.

Über zwei Kontrollkästchen soll der Wissenschafftliche titel ausgegeben werden.

Über ein Kombinationsfeld sollen einige Produkte ausgewählt oder auch neue angaben gemacht werden können.

Über drei Optionsfelder soll bestimmt werden ob 7% ,19%,oder gar keine Mwst erhoben werden soll.

Bei der Auswahl eines vorgegebenen Produktes soll die STückzahl mit einem Prodoktpreis multip. werden und dieser in das Feld für den rechnungsbetrag ausgegeben werden.

Falls kein vorgegebenes Produkt ausgewählt und ein neuer Produktname angegeben wurde, so gilt der Stückpreis , der in dasd Feld Einzelbetrag eingegeben wird.

Wurde keine Stückzahl angegeben , so ist eine Fehlermeldung auszugeben.

Je nachdem was ausgewählt wurde,muss die ensprechende mwst aud den endpreis aufgeschlagen werden.

Im Text müssen über Textmarken: der name mit titel, die anzahl und das produkt, der rechungsbetrag ausgegeben werden.

Die fertigen rehcungen sollen auf der festplatte mit dem titel und dem namen des kunden abgespeichert werden .

Nelken: 2,00

Rosen: 3,00

Gerbera: 2,50

Tulpen: 1,50

Sonnenblumen: 5,00
tony62392
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 07. Dez 2017, 13:56

Re: VBA rechung erstellen

Beitragvon theoS » 10. Dez 2017, 23:29

Das ist doch schon was ganz anderes.
Vielleicht kannst du dir den Rest dazu nun selbst basteln?
Ich habe das allerdings nun in Word2010 gemacht und auch so umgespeichert.
(Wenn du das nicht öffnen kannst, dann mach ich dir das auch als doc)

IN dem Archiv sind 2 Dateien. Die eine mit dem Makro und die andere als Demo-Template, da ich ja deine Zieldateivorlage nicht hatte.
Habe einiges an Kommentaren in den Code geschrieben, wenn noch Fragen sind, frag.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3687
Registriert: 19. Apr 2008, 00:14

Re: VBA rechung erstellen

Beitragvon tony62392 » 11. Dez 2017, 09:13

Hallo, erstmals vielen vielen Dank ! Dank deiner erklärung fällt mir das ganze viel lögischer und einfacher ..aber paar fragen hätte ich noch :-)

Was ist der Befehl Currcery

Was müsste ich noch fertig selbst basteln, ist doch schon alles fertig ich muss jetzt nur noch paar sachen anpassen aber im großen und ganzen ist doch der Code Fertig oder bin ich Blind ?

Danke nochmals mein Freund !!!
tony62392
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 07. Dez 2017, 13:56

Re: VBA rechung erstellen

Beitragvon theoS » 11. Dez 2017, 09:17

CCur() ist eine Funktion die eine Zahl ins Währungsformat umwandelt.
Currency ist ein Datentyp für Variablen.
Da du ja mit Beträgen rechnest, ist das, denke ich die richtige Wahl.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3687
Registriert: 19. Apr 2008, 00:14


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste