Thema Datum  Von Nutzer Rating
Antwort
Rot Rechnen mit ausgewählten ComboBoxen
13.04.2015 22:10:24 kugelblitz_87
NotSolved

Ansicht des Beitrags:
Von:
kugelblitz_87
Datum:
13.04.2015 22:10:24
Views:
1369
Rating: Antwort:
  Ja
Thema:
Rechnen mit ausgewählten ComboBoxen

Hallo zusammen,

habe ein Problem und komme nicht weiter. Ich hoffe, dass mir hier geholfen werden kann.

Ich habe eine Userform mit 6 ComboBoxen, in denen verschiedene Eigeschaften vorzufinden sind.

Im Tabellenblatt "Daten" sind die Eigenschaften mit folgenden Faktoren vorzufinden.

Anzahl Faktor Matrial zweilagig vierlagig sechslagig achtlagig Oberfläche zweilagig vierlagig sechslagig achtlagig Dicke zweilagig vierlagig sechslagig achtlagig
                                 
zweilagig 0,70 Matrial 1 1,00 1 1 1 Oberfläche 1 0,94 0,94 0,94 0,94 Dicke 0,8 0,89 0,91 0,95 -
vierlagig 1,00 Matrial 2 1,08 1,07 1,09 1,1 Oberfläche 2 0,95 0,95 0,95 0,95 Dicke 1,0  0,90 0,93 0,94 0,98
sechslagig 1,25 Matrial 3 1,17 1,16 1,2 1,18 Oberfläche 3 1,00 1,00 1,00 1,00 Dicke 1,5 1,00 1,00 1,00 1,00
achtlagig 1,58 Matrial 4 1,16 1,3 1,37 1,34 Oberfläche 4 1,11 1,18 1,17 1,18 Dicke 2,0 1,22 1,12 1,05 1,06

Bei meinem Code wird zur Zeit bei der Wahl der Eigenschaft immer nur der Faktor der ersten Spalte multipliziert.  Wählt man Zb. bei Anzahl vierlagig und Matrial3 und Oberfläche4 wird 1*1,17*1,11. Es müsste allerdings 1*1,16*1,18 gerechnet werden, da man zu Beginn Anzahl vierlagig gewählt.

Der derzeitige Code sieht folgendermaßen aus:



Private Sub ComboBox1_Change()
    lblErgebnis.Caption = Format(getTotal, "#,##0.00 €")
End Sub

Private Sub ComboBox2_Change()
    lblErgebnis.Caption = Format(getTotal, "#,##0.00 €")
End Sub

Private Sub ComboBox3_Change()
    lblErgebnis.Caption = Format(getTotal, "#,##0.00 €")
End Sub

Private Sub ComboBox4_Change()
    lblErgebnis.Caption = Format(getTotal, "#,##0.00 €")
End Sub

Private Sub ComboBox5_Change()
    lblErgebnis.Caption = Format(getTotal, "#,##0.00 €")
End Sub

Private Sub ComboBox6_Change()
    lblErgebnis.Caption = Format(getTotal, "#,##0.00 €")
End Sub


Private Sub CommandButton2_Click()
    
    Load UserForm2
    UserForm2.Label1.Caption = Format(getTotal, "#,##0.00 €")
    UserForm2.Show
    
End Sub

Private Sub Label1_Click()

End Sub

Private Sub UserForm_Initialize()
  'ComboBox1 wird über VBA mit Inhalt gefüllt
  ComboBox1.RowSource = "tblMerkmal1"
  'Es kann nichts in ComboBox1 geschrieben werden
  ComboBox1.Style = fmStyleDropDownList
  'ComboBox2 wird über VBA mit Inhalt gefüllt
  ComboBox2.RowSource = "tblMerkmal2"
  'Es kann nichts in ComboBox2 geschrieben werden
  ComboBox2.Style = fmStyleDropDownList
  'ComboBox3 wird über VBA mit Inhalt gefüllt
  ComboBox3.RowSource = "tblMerkmal3"
  'Es kann nichts in ComboBox3 geschrieben werden
  ComboBox3.Style = fmStyleDropDownList
  'ComboBox4 wird über VBA mit Inhalt gefüllt
  ComboBox4.RowSource = "tblMerkmal4"
  'Es kann nichts in ComboBox4 geschrieben werden
  ComboBox4.Style = fmStyleDropDownList
  'ComboBox5 wird über VBA mit Inhalt gefüllt
  ComboBox5.RowSource = "tblMerkmal5"
  'Es kann nichts in ComboBox5 geschrieben werden
  ComboBox5.Style = fmStyleDropDownList
  'ComboBox6 wird über VBA mit Inhalt gefüllt
  ComboBox6.RowSource = "tblMerkmal6"
  'Es kann nichts in ComboBox6 geschrieben werden
  ComboBox6.Style = fmStyleDropDownList
 
  lblErgebnis.Caption = Format(getTotal, "#,##0.00 €")
End Sub

Private Sub OptionButton1_Click()

If Me.OptionButton1.Value Then
    Me.ComboBox7.Visible = False
End If

End Sub

Private Sub OptionButton2_Click()
If Me.OptionButton2.Value Then
    Me.ComboBox7.Visible = True
End If
End Sub

Private Function getTotal() As Currency

    Dim ctl         As MSForms.Control
    Dim curWert     As Currency
    Dim curErgebnis As Currency
    
    Dim blnCalc     As Boolean
    
    curErgebnis = 1
    
    For Each ctl In Controls
        If TypeOf ctl Is MSForms.ComboBox Then
            Select Case ctl.Name
                Case "ComboBox1", "ComboBox2", "ComboBox3", "ComboBox4", "ComboBox5", "ComboBox6"
                    If ctl.Value <> "" Then
                        blnCalc = True
                        curWert = Range(ctl.RowSource).Cells(ctl.ListIndex + 1, 2).Value
                        curErgebnis = curErgebnis * curWert
                    End If
            End Select
        End If
    Next
    
    Set ctl = Nothing
    
    If Not blnCalc Then curErgebnis = 0
    
    getTotal = curErgebnis
    
End Function

 

Ich hoffe, dass ich es einigermaßen verständlich erklärt habe und mir jemand bei meinem Problem helfen kann.

Vielen Dank im Vorraus.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Rechnen mit ausgewählten ComboBoxen
13.04.2015 22:10:24 kugelblitz_87
NotSolved