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