Clever-Excel-Forum

Normale Version: Rechner mit VBA (Listboxm Button)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
[attachment=8765]
Hallo,

ich habe wie immer mal wieder ein Problem :19: 
Dr. Google konnte mir leider nicht weiter helfen, ich habe einen rechnen wo man ein Objekt aus der list box auswählen muss, dann in 2 Feldern drunter Zahlen eintragen muss und er anhand der makierung in der Listbox eine bestimmte Formel ausübt, dies funktioniert leider nicht, anbei erhaltet ihr ein Bild und meine formeln, die Rechnung wird gestartet durch den Button ausrechnung.

Hatte damals ein bisschen Java gehabt, aber irgendwie funktioniert das in VBA nicht :( :20: (das ist ja klar).

Private Sub UserForm_Initialize()
With Me.ListBox1
    .AddItem "Rente (BAV, BASIS, Privat)"
    .AddItem "BUZ"
    .AddItem "Sterbegeld"
    .AddItem "Risikolebensversicherung"
End With
End Sub

Private Sub CommandButton1_Click()
If IsNumeric(TextBox3.Text) And IsNumeric(TextBox2.Text) Then
    On Error GoTo errmsg
    Dim Laufzeit As Double
    Dim Laufzeit2 As Double 'Laufzeit2 = Laufzeit - 5 Jahre
    Dim Monatsbeitrag As Double
    Laufzeit = TextBox3.Text
    Monatsbeitrag = TextBox2.Text
    
    If Listbox1 = "Rente (BAV, BASIS, Privat)"
        Laufzeit2 = Laufzeit - 5
        TextBox4.Text = Monatsbeitrag * 12 * Laufzeit2
    Else If Listbox1 = "BUZ"
        TextBox4.Text = Monatsbeitrag * 12 * Laufzeit
    Else If Listbox1 = "Sterbegeld"
        TextBox4.Text = Monatsbeitrag * 12 * Laufzeit
    Else: ListBox1 = "Risikolebensversicherung"
        TextBox4.Text = Monatsbeitrag * 12 * Laufzeit * 2
    End If
Else
TextBox4.Text = "keine Zahl eingegeben"
End If
Exit Sub
errmsg:
    MsgBox Err.Number & " " & Err.Description
End Sub
Hallo

keine Ahnung was da wie mit welchen Zahlen gerechnet werden soll
aber zu einem If gehört auch immer ein Then

probier es mal so


Code:
Private Sub CommandButton1_Click()
If IsNumeric(TextBox3.Text) And IsNumeric(TextBox2.Text) Then
On Error GoTo errmsg
Dim Laufzeit As Double
Dim Laufzeit2 As Double 'Laufzeit2 = Laufzeit - 5 Jahre
Dim Monatsbeitrag As Double
Laufzeit = TextBox3.Text
Monatsbeitrag = TextBox2.Text

If ListBox1 = "Rente (BAV, BASIS, Privat)" Then
   Laufzeit2 = Laufzeit - 5
   TextBox4.Text = Monatsbeitrag * 12 * Laufzeit2
   ElseIf ListBox1 = "BUZ" Then
       TextBox4.Text = Monatsbeitrag * 12 * Laufzeit
   ElseIf ListBox1 = "Sterbegeld" Then
       TextBox4.Text = Monatsbeitrag * 12 * Laufzeit
   Else: ListBox1 = "Risikolebensversicherung"
       TextBox4.Text = Monatsbeitrag * 12 * Laufzeit * 2
   End If
   Else
   TextBox4.Text = "keine Zahl eingegeben"
End If
Exit Sub
errmsg:
MsgBox Err.Number & " " & Err.Description
End Sub


MfG Tom
Hallo

ich würde es mit der Fallunterscheidung machen
Code:
Private Sub CommandButton1_Click()
   Dim Laufzeit As Double
   Dim Laufzeit2 As Double 'Laufzeit2 = Laufzeit - 5 Jahre
   Dim Monatsbeitrag As Double
   If IsNumeric(TextBox3.Text) And IsNumeric(TextBox2.Text) Then
       On Error GoTo errmsg
       Laufzeit = TextBox3.Value
       Monatsbeitrag = TextBox2.Value
       Select Case ListBox1.ListIndex
           Case 0
               Laufzeit2 = Laufzeit - 5
               TextBox4.Value = Monatsbeitrag * 12 * Laufzeit2
           Case 1, 2
               TextBox4.Text = Monatsbeitrag * 12 * Laufzeit
           Case 3
               TextBox4.Text = Monatsbeitrag * 12 * Laufzeit * 2
       End Select
   Else
       TextBox4.Text = "keine Zahl eingegeben"
   End If
   Exit Sub
errmsg:
   MsgBox Err.Number & " " & Err.Description
End Sub
der erste Eintrag in einer Listbox ist Index 0

MfG Tom
Vielen Dank, das mit dem Case ist echt viel einfacher.
Könntest du mir vielleicht bitte helfen den Rechner zuende zu bringen.
Was noch gemacht werden muss ist:

- In dem Ergebnisausgabefeld sollte man die Zahl die errechnet wurde kopieren können um es später in eine Zeile einzufügen.

- Ich würde gerne noch 2 Checkboxen einfügen wie lautet die if bedinungung die zu jedem case erfüllt sein könnte

Case 0
               If Chekbox1 = 1 Then
               Laufzeit2 = Laufzeit - 5
               TextBox4.Value = Monatsbeitrag * 12 * Laufzeit2 /100 * 60

               Elseif Chekbox0 = 1 Then
                   Laufzeit2 = Laufzeit - 5

               TextBox4.Value = Monatsbeitrag * 12 * Laufzeit2 /100 * 80
               Else
               TextBox4.Value = Monatsbeitrag * 12 * Laufzeit2
                Endif
(05.01.2017, 09:56)hbboy15 schrieb: [ -> ]Vielen Dank, das mit dem Case ist echt viel einfacher.
Könntest du mir vielleicht bitte helfen den Rechner zuende zu bringen.
Was noch gemacht werden muss ist:

- In dem Ergebnisausgabefeld sollte man die Zahl die errechnet wurde kopieren können um es später in eine Zeile einzufügen.

- Ich würde gerne noch 2 Checkboxen einfügen wie lautet die if bedinungung die zu jedem case erfüllt sein könnte

Case 0
               If Chekbox1 = 1 Then
               Laufzeit2 = Laufzeit - 5
               TextBox4.Value = Monatsbeitrag * 12 * Laufzeit2 /100 * 60

               Elseif Chekbox0 = 1 Then
                   Laufzeit2 = Laufzeit - 5

               TextBox4.Value = Monatsbeitrag * 12 * Laufzeit2 /100 * 80
               Else
               TextBox4.Value = Monatsbeitrag * 12 * Laufzeit2
                Endif
Die Sache mit den If's habe ich hinbekommen, benötige nur noch die andere Geschichte.
Hallo

welche andere Geschichte meinst du?
das Kopieren des Textboxinhalts?

den Inhalt markieren und dann

Strg + C

MfG Tom
(05.01.2017, 14:35)Crazy Tom schrieb: [ -> ]Hallo

welche andere Geschichte meinst du?
das Kopieren des Textboxinhalts?

den Inhalt markieren und dann

Strg + C

MfG Tom

Diesen kann man nicht Kopieren, da das ein reines Ausgabe feld ist, ich meinte ob man dort nicht rechtsklick kopieren machen kann (ohne alles zumakieren) und dann später in die Zelle einfügen kann.
Hallo

was für ein "Feld" ist es denn?
ein Label?
dann nutze das Doppelklick-Ereignis

Code:
Option Explicit

Dim MeineVariable As Variant

Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   MeineVariable = Label1.Caption
   MsgBox MeineVariable
End Sub

wenn du es auf diese Weise in die Variable packst kannst du es später aus der Userform
in jede beliebige Zelle einfügen

MfG Tom
Vielen Dank :)

in diesem Fall ist es eine Textbox.
Hallo

*flööööööööööööööt*


Code:
Option Explicit

Dim MeineVariable As Variant

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   MeineVariable = TextBox1.Text
   MsgBox MeineVariable
End Sub


MfG Tom