Mehrere rechnugsprozeduren

hallo,

wie stelle ich es an wenn ich z. b. mehrer rechnugs-prozeduren in nem textfeld ausgeben muss - also ungefaehr so: ich habe x stueck von ware y (mit nem bestimmen preis!) mit der mwst7 oder 16 oder eben keine mwst
nun - gibt es sowas wie ne zwischenablage wo sich vba das erste ergebnis merkt und dann eben mit den 7 % weiterrechnet oder wie sonst?

danke!

gruss manuel!

Hi,

ich würde das über ne UDT machen.
Dann kannst du einfacher darüber rechnen.

Beispiel

Private Type Waren
Name As String
Preis_Netto As Currency
Ust As Integer
End Type

Dim Meine_Waren() As Waren

Private Sub Command1_Click()
MsgBox Format(Berechne_Preis(2, 0), „#0.00“)
End Sub

Private Sub Form_Load()
ReDim Meine_Waren(0)
Meine_Waren(0).Name = „Tisch“
Meine_Waren(0).Preis_Netto = 230
Meine_Waren(0).Ust = 16
End Sub
Private Function Berechne_Preis(Multiplikator As Integer, WarenIndex As Integer) As Double
Berechne_Preis = Meine_Waren(WarenIndex).Preis_Netto * Multiplikator * (Meine_Waren(0).Ust + 100) / 100
End Function

Ich hoffe es hilft dir weiter

greetz

Mario

Danke dir - aber leider steig ich da ned so durch

ich kann dir mal meine code geben:

Option Explicit

Private Sub cmdBerechnen_Click()
Dim strName As String
Dim strVorname As String
Dim intStueckzahl As Integer
Dim curEinzelbetrag As Currency
Dim curRechnungsbetrag As Currency
Dim intProdukt As Integer
Dim intMwStkeine As Integer
Dim intMwSt7 As Integer
Dim intMwSt16 As Integer

With Me
strName = .txtName
strVorname = .txtVorname
intStueckzahl = val(txtStueckzahl.Value)
strEinzelbetrag = .txtEinzelbetrag
strRechnungsbetrag = .txtRechnungsbetrag
intProdukt = val(cboProdukt.Value)
'intMwStkeine = 0
'intMwSt7 = 7 / strRechnungsbetrag + 100
'intMwSt16 = 16 / strRechnungsbetrag + 100

End With

If cboProdukt = „Nelken“ Then
txtEinzelbetrag = „2€“
txtRechnungsbetrag = val(txtEinzelbetrag.Value) * val(txtStueckzahl.Value)
End If
If cboProdukt = „Rosen“ Then
txtEinzelbetrag = „3€“
txtRechnungsbetrag.Value = val(txtEinzelbetrag.Value) * val(txtStueckzahl.Value)
End If
If cboProdukt = „Gerbera“ Then
txtEinzelbetrag = „2.50€“
txtRechnungsbetrag.Value = val(txtEinzelbetrag.Value) * val(txtStueckzahl.Value)
End If
If cboProdukt = „Tulpen“ Then
txtEinzelbetrag = „1.50€“
txtRechnungsbetrag.Value = val(txtEinzelbetrag.Value) * val(txtStueckzahl.Value)
End If
If cboProdukt = „Sonnenblumen“ Then
txtEinzelbetrag = „5€“
txtRechnungsbetrag.Value = val(txtEinzelbetrag.Value) * val(txtStueckzahl.Value)
End If

End Sub

Private Sub cmdEnde_Click()
Hide
End Sub

Private Sub optMwStkeine_Click()

End Sub

Private Sub UserForm_Initialize()
With cboProdukt
.AddItem „“
.AddItem „Nelken“
.AddItem „Rosen“
.AddItem „Gerbera“
.AddItem „Tulpen“
.AddItem „Sonnenblumen“
End With
End Sub

weiss du was ich mein?

gruss manuel!

______________________________________________

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

ich habe jetzt mal meinen Code angepasst
Also zunächst definiere ich einen eigenen Typen mit dem Namen Produkt
Darunter findet man Name, Preis, Mehrwertsteuer
Desweiteren definiere ich einen Array mit dem Namen Waren auf diesen eigenen Typen

Der Vorteil ist ganz einfach.
Du hast eine Variable nur. Einen Index und darunter halt diverse Unterpunkte. Aber man kommt nicht durcheinander oder weiß nicht mehr, was man für eine Variable verwenden muss.

Du siehst auch in der UserForm_Initialize wie die Produkte und Werte zugeordnet werden.
Du hast dann die Werte in einem Array, das in der ganzen Form verfügbar ist.

Ich habe noch eine Function hinzugefügt, in der der Betrag errechnet wird.
Hierbei habe ich noch die Möglichkeit hinzugetan, dass man Netto oder Brutto angeben kann.

Probier es einfach mal aus - wenn du damit Schwierigkeiten hast, meld dich einfach nochmal

Option Explicit

Private Type Produkt
Name As String
Preis As Currency
Mwst As Integer
End Type

Dim Waren() As Produkt

Private Sub cmdBerechnen_Click()
Dim strName As String
Dim strVorname As String
Dim intStueckzahl As Integer
Dim curEinzelbetrag As Currency
Dim curRechnungsbetrag As Currency
Dim intProdukt As Integer
Dim intMwStkeine As Integer
Dim intMwSt7 As Integer
Dim intMwSt16 As Integer

With Me
'strName = .txtName
'strVorname = .txtVorname
End With

MsgBox Format(ErmittleBetrag(Val(txtstueckzahl.Text), cboprodukt.ListIndex, True), „0.00 Euro“) _
& " Netto " & vbNewLine & "Produktname: " & Waren(cboprodukt.ListIndex).Name & _
vbNewLine & "Anzahl: " & txtstueckzahl.Text

MsgBox Format(ErmittleBetrag(Val(txtstueckzahl.Text), cboprodukt.ListIndex, False), „0.00 Euro“) _
& " inklusive " & Waren(cboprodukt.ListIndex).Mwst & „% MWST“ & _
vbNewLine & "Produktname: " & Waren(cboprodukt.ListIndex).Name & vbNewLine & "Anzahl: " & txtstueckzahl.Text
End Sub

Private Sub cmdEnde_Click()
Hide
End Sub

Private Sub optMwStkeine_Click()

End Sub

Private Sub UserForm_Initialize()
Dim i As Integer
ReDim Waren(4)
Waren(0).Name = „Nelken“: Waren(0).Preis = 2: Waren(0).Mwst = 16
Waren(1).Name = „Rosen“: Waren(1).Preis = 3: Waren(1).Mwst = 16
Waren(2).Name = „Gerbera“: Waren(2).Preis = 2.5: Waren(2).Mwst = 16
Waren(3).Name = „Tulpen“: Waren(3).Preis = 1.5: Waren(3).Mwst = 16
Waren(4).Name = „Sonnenblume“: Waren(4).Preis = 5: Waren(4).Mwst = 16

With cboprodukt
For i = 0 To UBound(Waren)
.AddItem Waren(i).Name
Next
End With
End Sub

Private Function ErmittleBetrag(Anzahl As Integer, WarenNummer As Integer, netto As Boolean) As Double
If netto = False Then
ErmittleBetrag = Waren(WarenNummer).Preis * Anzahl * ((Waren(WarenNummer).Mwst + 100) / 100)
Else
ErmittleBetrag = Waren(WarenNummer).Preis * Anzahl
End If
End Function

Ich hoffe es hilft dir weiter

greetz

Mario

ja das hat gewirkt - danke dir

gruss manuel!