PDA

Vollständige Version anzeigen : Rechnen mit Textboxen aus 2 Userformen


Leuchte
05.07.2015, 12:44
Hallo an alle,
mit der Bitte um Hilfe an alle.

Aufgabe:
2 Userformen mit diversen TextBoxen.
In UserForm 2 soll eine Rechenaufgabe mit TextBoxen aus UF1 und UF2
ausgeführt werden.

[Sub TextBox39_Change()
TextBox16 = CDbl(UserForm1.TextBox3) / CDbl(UserForm1.TextBox35) * CDbl(TextBox40)
End Sub

Sub TextBox39_Change()
TextBox16 = CDbl(UserForm1.TextBox3) / CDbl(UserForm1.TextBox35) * CDbl(UserForm2.TextBox40)
End Sub

Beide Codes bringen den gleichen Fehler:
Laufzeitfehler 13 Typen unverträglich

In der Fehlermeldung sind die werte in den TextBoxen aus der UF1 enthalten, die TextBox der UF2 zeigt "" obgleich sie einen Inhalt hat.

Ich hoffe, mein Problem ist verständlich dargestellt. Ich freue mich auf jeden Lösungsvorschlag, mein "Latein" ist am Ende.
Einen schonen Tag wünscht allen
LEUCHTE

Hajo_Zi
05.07.2015, 12:50
Du hast vergessen zu prüfen ob TextBoxinhalt numerisch ist.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Leuchte
05.07.2015, 13:33
Hi Hajo
Vielen Dank für Deine schnelle Antwort.
Ich hab den Code geändert und mit einer MsgBox geprüft.
Jetzt läuft es

Sub TextBox39_Change()
If IsNumeric(Textbox40) Then _
TextBox16 = CDbl(UserForm1.TextBox3) / CDbl(UserForm1.TextBox35) * CDbl(Textbox40)
MsgBox Textbox40
End Sub

Frage: Was hat sich durch die Prüfung geändert??
Nur machen ist mir nicht genug, ich möchte es als Anfänger auch
verstehen
Es wäre sicher viel zu viel Arbeit jedem FRAGER(IN) auch Unterricht zu geben; aber in diesem Fall vielleicht eine Ausnahme??

Ich freue mich auf Deine Antwort. einen schönen Tag wünscht Dir
LEUCHTE

Hajo_Zi
05.07.2015, 13:59
eine leere TextBox ist nicht numerisch.
es müssen alle getestet werden.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Leuchte
05.07.2015, 15:03
Hi Hajo
Danke, hilft mir weiter.
Gruß
LEUCHTE

Naki
17.06.2017, 22:48
Hallo,
ich habe das Problem auch und finde keine Lösung.
Private Sub txt_Gesamtkosten_change()
If IsNumeric(txt_Zuschuss) And IsNumeric(txt_EA) Then
txt_Gesamtkosten = CDbl(txt_Zuschuss) + CDbl(txt_EA)
End If

End Sub

''Formatierung in €
Private Sub txt_Gesamtkosten_afterupdate()
txt_Gesamtkosten = Format(Me.txt_Gesamtkosten.Value, "#,##0.00 €")

End Sub
(Auch die anderen Textboen sind wie oben Formatiert)
Wenn ich das mit "Enter" Ereignis durchführe, werden die Eingaben in den Textboxen addiert aber ich muss zu erst in die Ergebnis Textbox klicken.
Mein Vorhaben ist, dass das Ergebnis direkt im "txt_Gesamtkosten" erscheint.
Gibt es dafür eine Lösung?
Gruß
Naki

Hajo_Zi
18.06.2017, 06:27
Du löst Deine Berechnung aus, falls in der txt_Gesamtkosten was eingegeben wird. Ob das richtig ist kannst Du nur sehen, da Du Deine Datei siehst. Man könnte vermuten es ist falsch.
Es wurden nicht alle Hinweise umgesetzt <>"" wurde nicht gemacht, das wird schon seinen Grund haben.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Naki
18.06.2017, 12:00
Hallo,
habe es mit dem folgen Code ausprobiert.
In dem ich die txt_Zuschuss verlasse übernimmt es die Berechnung in die txt-Gesamtkosten.

Private Sub txt_Zuschuss_afterupdate()
txt_Zuschuss = Format(Me.txt_Zuschuss.Value, "#,##0.00 €")
If IsNumeric(txt_Zuschuss) Then
txt_Gesamtkosten = CDbl(txt_Zuschuss) + CDbl(txt_EA)
End If
txt_Gesamtkosten = Format(Me.txt_Gesamtkosten.Value, "#,##0.00 €")
End Sub

R J
18.06.2017, 14:35
Hi Naki,

hier:

If IsNumeric(txt_Zuschuss) Then
txt_Gesamtkosten = CDbl(txt_Zuschuss) + CDbl(txt_EA)

prüfst Du zwar, ob txtZuschuss numerisch ist, jedoch nicht txt_EA. EA kann immer noch ein leeres Feld oder nicht numerischer Wert sein.

Mögliche Abhilfe:

Private Sub txt_EA_AfterUpdate()
IstOK "txt_EA"
End Sub


Private Sub txtZuschuss_AfterUpdate()
IstOK "txtZuschuss"
End Sub

Sub IstOK(ctr As String)
Dim msg$
msg = " in die Textbox für " & IIf(ctr = txtZuschuss, "Zuschuss", "Einnahme/Ausgabe")

If IsEmpty(Me.Controls("txtZuschuss").Text) Or Not IsNumeric(Me.Controls("txt_EA").Text) Then
txt_Gesamtkosten.Visible = False
MsgBox "Bitte eine Zahl" & msg & " eingeben"
Else
txt_Gesamtkosten.Visible = True
txt_Gesamtkosten.Text = Format(CDbl(txt_EA.Text) + CDbl(txtZuschuss.Text), "###,##0.00 €")
End If

End Sub

Naki
18.06.2017, 18:15
Hi RJ,
danke für deine Hilfe.
So ist es viel besser und sicherer als meine Option.
Gruß

R J
19.06.2017, 10:00
...naja... die komplette Prüfung ist aber umfangreicher:

If IsEmpty(Me.Controls("txtZuschuss").Text) Or Not IsNumeric(Me.Controls("txtZuschuss").Text) Or IsEmpty(Me.Controls("xt_EA").Text) Or Not IsNumeric(Me.Controls("txt_EA").Text) Then
'...also beide Felder komplett prüfen...