VBA nur mit Variablen rechnen
#1
Hallo,

ich habe mir eine VBA Userform erstellt, ein kleiner rechner neben bei,
dort sind 2 Felder wo man zahlen eingeben soll und eine Checkbox die man gegebenenfalls anklicken kann(diese Checkbox bewirkt das ergebnis mal 2)
ich will die 2 Eingabe felder zwischen speichern als Numerische Variablen, diese sollen dann multipliziert werden, Wenn Checkbox True dann das, sonst das
am Ende soll mir das Ergebnis in einem dritten Feld ausgegeben werden, ich bekomme es leider nicht hin Sad, ich hoffe ihr könnt mir helfen.

Public Laufzeit As Integer
Public Monatsbeitrag As Integer
Public Ergebnis As Integer


Private Sub CommandButton1_Click()
'Dim Laufzeit As Integer
'Dim Monatsbeitrag As Integer
Dim RisikoLV As Integer
Dim Ergebnis As Integer
Lauftzeit = TextBox3_Change.Text
Monatsbeitrag = TextBox2_Change.Text

If CheckBox1 = True Then
Ergebnis = Laufzeit * Monatsbeitrag * 12 * 2
Else
Ergebnis = Laufzeit * Monatsbeitrag * 12
End If

Unload Me
TextBox4.Show
End Sub



ich hoffe ihr könnt mir helfen Smile
Antwortento top
#2
Hallo,

wenn mit dem dritten Feld die TextBox4 gemeint ist.

Code:
Private Laufzeit As Integer
Private Monatsbeitrag As Integer
Private Ergebnis As Integer


Private Sub CommandButton1_Click()
'Dim Laufzeit As Integer
'Dim Monatsbeitrag As Integer
Dim RisikoLV As Integer
Dim Ergebnis As Integer
Lauftzeit = TextBox3_Change.Text
Monatsbeitrag = TextBox2_Change.Text

If CheckBox1 = True Then
Ergebnis = Laufzeit * Monatsbeitrag * 12 * 2
Else
Ergebnis = Laufzeit * Monatsbeitrag * 12
End If

Unload Me
TextBox4.Value = Ergebnis
'TextBox4.Show 'eine Textbox hat keine Show-Methode
End Sub
Gruß Stefan
Win 7 / Office 2007
Antwortento top
#3
Hi,

der Code ist etwas sinnfrei
Change kann nicht bei Klick verwendet werden.
TextBox.show ? heißt die Userform Text box?

Code:
Option Explicit

Private Sub CommandButton1_Click()
If IsNumeric(TextBox3.Text) And IsNumeric(TextBox2.Text) Then
    On Error GoTo errmsg
    Dim Laufzeit As Integer
    Dim Monatsbeitrag As Integer
    Laufzeit = TextBox3.Text
    Monatsbeitrag = TextBox2.Text
    
    If CheckBox1 = True Then
        TextBox4.Text = Laufzeit * Monatsbeitrag * 12 * 2
    Else
        TextBox4.Text = Laufzeit * Monatsbeitrag * 12
    End If
End If
Exit Sub
errmsg:
    MsgBox Err.Number & " " & Err.Description
End Sub
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
 ?mage

[-] Folgende(r) 1 Benutzer sagt Danke an chris-ka für diesen Beitrag:
  • hbboy15
Antwortento top
#4
Vielen Dank, du bist echt Klasse Smile

Eine Sache macht er nicht, wenn in dem Feld von Textbox2 oder 3 ein Buchstabe eingegeben wird, soll er in textbox4 eine Fehlermeldung auspucken, Keine Zahl eingeben.

Und eine Frage habe ich noch, ich hätte gerne die möglichkeit, am Ende das Ergebnis mit Rechtsklick zu kopieren und später in die Tabelle einzufügen, wie kann ich das handlen ?
Antwortento top
#5
leider gibt der mir beim Ergebnis keine Komma Zahlen aus Sad, hab überall Double drauf gemacht, aber bewirkt nichts Sad
Antwortento top
#6
Hallo,

zur ersten Frage

Code:
Private Sub CommandButton1_Click()
If IsNumeric(TextBox3.Text) And IsNumeric(TextBox2.Text) Then
    On Error GoTo errmsg
    Dim Laufzeit As Integer
    Dim Monatsbeitrag As Integer
    Laufzeit = TextBox3.Text
    Monatsbeitrag = TextBox2.Text
    
    If CheckBox1 = True Then
        Textbox4.Text = Laufzeit * Monatsbeitrag * 12 * 2
    Else
        Textbox4.Text = Laufzeit * Monatsbeitrag * 12
    End If
Else
Textbox4.Text = "Es wurde Text eingegeben"
End If
Exit Sub
errmsg:
    MsgBox Err.Number & " " & Err.Description
End Sub

Zur letzten Frage: VBA denkt hier englisch.
Gruß Stefan
Win 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
  • hbboy15
Antwortento top
#7
Das mit der Fehlermeldung hat nun geklappt Smile
Danke.
Folgendes Problem habe ich noch:

Ich hab die Ergebnisbox so eingestellt, dass man dort nichts verändern kann, aber ich würde gerne zulassen, dass das Ergebnis mit rechtsklick kopiert und später eingefügt werden kann.

kann mir hier noch jemand helfen ? Smile
Antwortento top
#8
Moin!
Rechtsklick dürfte schwierig sein.
Eine Textbox hat aber ein Doppelklick-Event.

Um den Text durch Doppelklick in die Zwischenablage zu befördern, gibt es die .PutInClipboard-Methode eines DataObject.
Du holst es mittels .GetText

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim oData As New DataObject
Cancel = True
With oData
   .SetText TextBox1.Text
   .PutInClipboard
   MsgBox "Der Text: " & .GetText & " befindet sich nun in der Zwischenablage!"
End With
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antwortento top
#9
Hi Ralf,

(03.06.2016, 10:42)RPP63 schrieb: Rechtsklick dürfte schwierig sein.
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 Select Case Button
   Case 1
     MsgBox "Das war ein Linksklick."
   Case 2
     MsgBox "Das war ein Rechtsklick."
 End Select
End Sub
Gruß Uwe
Antwortento top
#10
Yepp, Uwe! Blush
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste