Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Problem mit Textfeld, Laufzeitfehler: Typen unv.

Problem mit Textfeld, Laufzeitfehler: Typen unv.
24.09.2007 15:43:14
Peter
Hallo alle zusammen,
auf meiner Userform befinden sich unter anderem mehrere Textfelder.
Beim verlassen des Textfeldes "txtLewa" soll in das Textfeld "txtBetrag_Transfer"
1.
das Ergebnis aus z.B. "txtLewa.Value * txtBetrag_Gesellschaft_Konto.Value" eingetragen werden und
2.
in das Zahlenformat mit 1000er Punkt und 2 Nachkommastellen gebracht werden. (z.B. 1.000,00)
auf einem Rechner mit bulgarischem Office wird das Zahlenformat ohne 1000er Punkt und anstatt des Kommas in einen Punkt und mehr als 2 Nachkommastellen umgewandelt.

Private Sub txtLewa_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Val(txtLewa.Text)  "" Then
If Not IsNumeric(txtLewa.Text) = True Then
MsgBox "Geben Sie eine positive Zahl ein"
txtLewa.Text = ""
Cancel = True
End If
End If
If txtLewa = "" Or txtEuro = "" Then
Me.txtBetrag_Transfer = ""
Else
If txtLewa > 0 And txtEuro > 0 And LCase(Right(cboGesellschaft_Konto.Text, 4)) = "euro" And  _
LCase(Right(cboGesellschaft_Konto_intern.Text, 4)) = "lewa" Then
Me.txtBetrag_Transfer = txtLewa.Value * txtBetrag_Gesellschaft_Konto.Value
Me.txtBetrag_Transfer = Format(Me.txtBetrag_Transfer, "#,##0.00")
End If
If txtLewa > 0 And txtEuro > 0 And LCase(Right(cboGesellschaft_Konto.Text, 4)) = "lewa" And  _
LCase(Right(cboGesellschaft_Konto_intern.Text, 4)) = "euro" Then
Me.txtBetrag_Transfer = txtBetrag_Gesellschaft_Konto.Value / txtLewa.Value
Me.txtBetrag_Transfer = Format(Me.txtBetrag_Transfer, "#,##0.00")
End If
End If
End Sub


Mit folgendem Code sollen die Ergebnisse aus den Textfeldern in eine Exceltabelle übertragen werden.
Die Übertragung funktioniert im bulgarischen Excel aus allen Textfeldern ausser aus "txtBetrag_Transfer", dort wo die Zahl nicht richtig umgewandelt wird.
Bei der Übertragung wird der Inhalt aus "txtBetrag_Transfer" noch mit -1 multipliziert.


Private Sub cmdOK_Click()
Dim cell As Range
Dim a As Long
Dim lbMsg As Byte
SpeedUp (True)
ActiveSheet.Unprotect Password:="Peter"
Dim nz As Integer, rngZ As Range
nz = Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each rngZ In Rows(nz - 1).SpecialCells(xlCellTypeFormulas)
rngZ.Copy
Cells(nz, rngZ.Column).PasteSpecial Paste:=xlPasteFormulas
Next
Application.CutCopyMode = False
'Application.CutCopyMode = False
'Cells(nz, 1).Select
'Dim nz As Integer
'nz = Cells(Rows.Count, 1).End(xlUp).Row + 1
'Rows(nz - 1).Copy
'Cells(nz, 1).PasteSpecial Paste:=xlPasteFormats
Cells(nz, 1).Value = CDate(Me.txtDatum)
Cells(nz, 2).Value = CDate(Me.txtfaellig_zum)
Cells(nz, 3).Value = Me.cboArt
Cells(nz, 4).Value = Me.cboGesellschaft_Konto + " - " + Me.cboGesellschaft_Konto_intern
Cells(nz, 5).Value = Me.txtZahlungsgrund
'Mit Wechselkurs
'Konten und Zellbezüge für Zahlungsausgang bei Zahlungsart transfer (t)
If Me.cboGesellschaft_Konto_intern = "DA/Al LEWA" Then
Cells(nz, 12).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "DA/Al EURO" Then
Cells(nz, 20).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "DA/Ko LEWA" Then
Cells(nz, 24).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "DA/Ko EURO" Then
Cells(nz, 28).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "DA/Tr LEWA" Then
Cells(nz, 32).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "DA/Tr EURO" Then
Cells(nz, 36).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "AS/Al LEWA" Then
Cells(nz, 34).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "LB/Al LEWA" Then
Cells(nz, 44).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "LB/Al EURO" Then
Cells(nz, 52).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "LHB/Al LEWA" Then
Cells(nz, 56).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "LHB/Al EURO" Then
Cells(nz, 64).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "AW/Al LEWA" Then
Cells(nz, 68).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "AW/Al EURO" Then
Cells(nz, 72).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "AW/Tr LEWA" Then
Cells(nz, 76).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
If Me.cboGesellschaft_Konto_intern = "AW/Tr EURO" Then
Cells(nz, 80).Value = CDec(Me.txtBetrag_Transfer) * -1
End If
'Konten und Zellbezüge für Zahlungseingang bei Zahlungsart transfer (t)
If Me.cboGesellschaft_Konto = "DA/Al LEWA" Then
Cells(nz, 13).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "DA/Al EURO" Then
Cells(nz, 21).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "DA/Ko LEWA" Then
Cells(nz, 25).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "DA/Ko EURO" Then
Cells(nz, 29).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "DA/Tr LEWA" Then
Cells(nz, 33).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "DA/Tr EURO" Then
Cells(nz, 37).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "AS/Al LEWA" Then
Cells(nz, 41).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "LB/Al LEWA" Then
Cells(nz, 45).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "LB/Al EURO" Then
Cells(nz, 53).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "LHB/Al LEWA" Then
Cells(nz, 57).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "LHB/Al EURO" Then
Cells(nz, 65).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "AW/Al LEWA" Then
Cells(nz, 69).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "AW/Al EURO" Then
Cells(nz, 73).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "AW/Tr LEWA" Then
Cells(nz, 77).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
If Me.cboGesellschaft_Konto = "AW/Tr EURO" Then
Cells(nz, 81).Value = CDec(Me.txtBetrag_Gesellschaft_Konto)
End If
Unload Me
Range("A7:CM2000").Sort Key1:=Range("A7"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Columns(1).Find(CDate(Me.txtDatum)).Select
ActiveSheet.Protect Password:="Peter"
SpeedUp (False)
End Sub


Im bulgarischen Excel kommt dann die Fehlermeldung:
Runtime Error "13": Typ Missmatch
In folgendem Code funktioniert die Formatierung auch im bulgarischen Excel:


Private Sub txtBetrag_Gesellschaft_Konto_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Val(txtBetrag_Gesellschaft_Konto.Text)  "" Then
If Not IsNumeric(txtBetrag_Gesellschaft_Konto.Text) = True Then
MsgBox "Geben Sie eine positive Zahl ein"
txtBetrag_Gesellschaft_Konto.Text = ""
Cancel = True
End If
End If
Me.txtBetrag_Gesellschaft_Konto = Format(Me.txtBetrag_Gesellschaft_Konto, "#,##0.00")
End Sub


Kann mir jemand helfen?
Danke im Voraus
Grüße aus Berlin

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Problem eingekreist aber noch nicht gelöst
25.09.2007 13:12:00
Peter
Hallo alle zusammen,
ich konnte das Problem noch mehr einkreisen.
Die falsche Formatausgabe entsteht an folgender Stelle:
Me.txtBetrag_Transfer = txtLewa.Value * txtBetrag_Gesellschaft_Konto.Value
So wird die Zahl in ein falsches Format gebracht, nicht wie gewünscht in:
Me.txtBetrag_Transfer = Format(Me.txtBetrag_Transfer, "#,##0.00")
sondern in z.B. 12354.23598412555542
Der Code der diese Zahl dann mit -1 multipliziert und in eine Zelle in der Exceltabelle eintragen soll versteht diese Zahl wohl nicht als Zahl (Punkt statt Komma usw.).
Wenn ich wie oben gewünscht die Inhalte aus "txtLewa" und "txtBetrag_Gesellschaft_Konto" nicht miteinander multipliziere, sondern nur einen Inhalt übertrage, wie z.B.:
Me.txtBetrag_Transfer = txtLewa.Value
wird das Format, wie gewünscht, eingehalten und es funktioniert der Code zur Multiplikation mit -1 und der Übertragung in die Tabelle.
Ich glaube das Problem entsteht bei der Multiplikation der Inhalte der beiden Textboxen (txtLewa.Value * txtBetrag_Gesellschaft_Konto.Value)
Kann mir jemand sagen wie ich die Problemstelle beheben kann?
Danke im Voraus
Grüße aus Berlin

Anzeige
AW: Problem eingekreist aber noch nicht gelöst
25.09.2007 15:18:00
Luschi
Hallo Peter,
die Textboxen enthalten nur Textwerte, auch wenn der Inhalt wie eine Zahl aussieht.
So sollte es klappen:
Me.txtBetrag_Transfer.Value = Format((Val(txtLewa.Value) * Val(txtBetrag_Gesellschaft_Konto.Value)), "#,##0.00")
Gruß von Luschi
aus klein-Paris

AW: Problem eingekreist aber noch nicht gelöst
25.09.2007 16:18:00
Peter
Hallo Luschi,
funktioniert noch nicht richtig.
Jetzt rechnet er falsch, wenn in txtBetrag_Gesellschaft_Konto 5.000,00 Euro stehen und in txtLewa 2 dann steht jetzt in txtBetrag_Transfer 10,00, richtig wäre 10.000,00.
Kannst du dir das nochmal ansehen?!
Danke
Grüße aus Berlin

Anzeige
Ergänzung
25.09.2007 19:22:00
Peter
Hallo,
als Hilfestellung vielleicht, der Exit Code für das Textfeld "txtBetrag_Gesellschaft_Konto" mit dem multipliziert wird sieht so aus:

Private Sub txtBetrag_Gesellschaft_Konto_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Val(txtBetrag_Gesellschaft_Konto.Text)  "" Then
If Not IsNumeric(txtBetrag_Gesellschaft_Konto.Text) = True Then
MsgBox "Geben Sie eine positive Zahl ein"
txtBetrag_Gesellschaft_Konto.Text = ""
Cancel = True
End If
End If
Me.txtBetrag_Gesellschaft_Konto.Value = Format(Val(Me.txtBetrag_Gesellschaft_Konto), "#,##0.00") _
End Sub


Gruß
Peter

Anzeige
AW: Ergänzung
26.09.2007 08:53:00
Luschi
Hallo Peter,
habe mal ein bischen getestet, die Cdbl-Funktion wandelt den Textwert korrekt um::

Private Sub txtBetrag_Gesellschaft_Konto_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim s1 As String, s2 As String, _
d1 As Double, d2 As Double
s1 = Me.txtBetrag_Gesellschaft_Konto.Value
If "" = Trim(s1) Then
Me.txtBetrag_Gesellschaft_Konto.Text = ""
Cancel = True
Exit Sub
End If
If Val(s1) 

Gruß von Luschi
aus klein-Paris

rechnet falsch
26.09.2007 10:14:55
Peter
Hallo,
ich habe deinen Code eingefügt, er rechnet immer noch falsch.
Ich stelle mal meine Datei als Zip rein, vielleicht hilft es ja.
Eine kleine Anleitung zur Bedienung des Tools:
1. Klick auf die Schaltfläsche "Transfer" auf meiner eigenen Symbolleiste
2. dann in der Userform in den Feldern in denen Eintragungen möglich sind diese machen (sind nur "Betrag (+)" und "Lewa"
3. im Feld "Betrag Transfer (-)" ist dann schon die errechnete Zahl abzulesen
Der Code um den es geht befindet sich in Formulare, in der Userform "frmneue-Zahlung_transfer".
https://www.herber.de/bbs/user/46340.zip
Kannst du da nochmal reinschauen?!
Grüße aus Berlin

Anzeige
AW: rechnet falsch
26.09.2007 14:37:00
Luschi
Hallo Peter,
hier mein Lösungsvorschlag.
Habe for die Berechnung 1 Funktion geschrieben, die an 3 Stellen mit unterschiedlichern _ Parametern aufgerufen wird.

1. Parameter: Name der Textbox
2. Parameter: 0 oder 1
0 --> Array-Variablen für Texzbox "txtBetrag_Gesellschaft_Konto"
1 --> Array-Variablen für Textbox "txtLewa"
3. Parameter
True  --> Zahl in Textbox wird formatiert
False --> Zahl in Textbox wird nicht formatiert (beim Change-Ereignis)


https://www.herber.de/bbs/user/46351.zip
Gruß von Luschi
aus klein-Paris

Anzeige
AW: rechnet falsch
26.09.2007 16:02:51
Peter
Hallo,
in meinem alten Code hatte ich noch eine Abfrage die eine Multiplikation bzw. eine Division veranlasste, je nach dem ob man von Euro in Lewa bzw. Lewa in Euro umrechnet. Jetzt gibt es nur die Multiplikation.

Private Sub txtLewa_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Val(txtLewa.Text)  "" Then
If Not IsNumeric(txtLewa.Text) = True Then
MsgBox "Geben Sie eine positive Zahl ein"
txtLewa.Text = ""
Cancel = True
End If
End If
If txtLewa = "" Or txtEuro = "" Then
Me.txtBetrag_Transfer = ""
Else
'von Euro in Lewa (Multiplikation)
If txtLewa > 0 And txtEuro > 0 And LCase(Right(cboGesellschaft_Konto.Text, 4)) = "euro" And  _
LCase(Right(cboGesellschaft_Konto_intern.Text, 4)) = "lewa" Then
Me.txtBetrag_Transfer.Value = Format((Val(txtLewa.Value) * Val(txtBetrag_Gesellschaft_Konto. _
Value)), "#,##0.00")
End If
'von Lewa in Euro (Division)
If txtLewa > 0 And txtEuro > 0 And LCase(Right(cboGesellschaft_Konto.Text, 4)) = "lewa" And  _
LCase(Right(cboGesellschaft_Konto_intern.Text, 4)) = "euro" Then
Me.txtBetrag_Transfer.Value = Format((Val(txtBetrag_Gesellschaft_Konto.Value) / Val(txtLewa. _
Value)), "#,##0.00")
End If
End If
End Sub


Ich habe versucht das in deinen Code einzubauen, funktioniert aber nicht.
Könntest du dir das bitte auch nochmal ansehen.
Danke für deine Mühe.
Mein Versuch in der aktuellen Datei: https://www.herber.de/bbs/user/46353.zip
Grüße aus dem kalten Berlin

Anzeige
AW: rechnet falsch
27.09.2007 10:14:45
Peter
Hallo Luschi,
super, scheint jetzt alles zu funktionieren.
Danke nochmal für deine Ausdauer.
Grüße aus Berlin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige