Microsoft Excel

Herbers Excel/VBA-Archiv

Werte werden nicht richtig berechnet


Betrifft: Werte werden nicht richtig berechnet
von: Fred
Geschrieben am: 08.11.2018 14:11:41

Hallo zusammen

Ich habe mal wieder ein Problem und kann es nicht lösen.
ich übergebe aus einer Userform Werte an eine Tabelle,was auch alles funktioniert leider werden die Ergebnisse in der Zelle nicht richtig angezeigt. Wenn ich mit Kommastelle rechne, Egal wie ich die Zelle auch Formatiere.
Rechne ich mit ganzen Zahlen läufts ,sobald eine Kommastelle dazu kommt funktioniert es leider nicht mehr

Es geht um den Bereich K5 bis X5 in der Tabelle.

Ich hoffe Ihr könnt mir mal wieder helfen.

http://www.herber.de/bbs/user/125266.xls

Grüße Fred

  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Werner
Geschrieben am: 08.11.2018 14:33:13

Hallo Fred,

du übergibst Text in die Tabelle und keine Zahlen. Geh mal in die Zelle mit deiner "Kommazahl" und gib die nochmals von Hand ein.

.Offset(, 1).Value = CDbl(TextBox2) 
Gruß Werner


  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Fred
Geschrieben am: 08.11.2018 14:58:28

Hallo Werner

Danke für die Schnelle antwort.

Da ich nicht alle Textboxen mit Werten fülle sind manche auch leer und schon Meckert der Debugger rumm.Unten steht mal der geänderte Code. Wie könnte ich das denn abstellen damit er die leeren TextBoxen ignoriert??

Private Sub Daten_übernehmen_Click()
 With Tabelle21 ' absoluter Bezug zu definierter Tabelle
        With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) ' Bezug zur 1. freien Zeile in Spalte A
            .Value = CDate(TextBox1.Text) ' Wertübergabe an Zelle in Spalte A
            .Offset(, 1).Value = CDbl(TextBox2.Text)  ' Wertübergabe an Zelle in Spalte B
            .Offset(, 2).Value = CDbl(TextBox3.Text)
            .Offset(, 3).Value = CDbl(TextBox4.Text)
            .Offset(, 4).Value = CDbl(TextBox5.Text)
            .Offset(, 5).Value = CDbl(TextBox6.Text)
            .Offset(, 9).Value = CDate(TextBox7.Text)
            .Offset(, 10).Value = CDbl(TextBox8.Text)
            .Offset(, 11).Value = CDbl(TextBox9.Text)
            .Offset(, 12).Value = CDbl(TextBox10.Text)
            .Offset(, 13).Value = CDbl(TextBox11.Text)
            .Offset(, 14).Value = CDbl(TextBox12.Text)
            .Offset(, 18).Value = CDate(TextBox13.Text)
            .Offset(, 19).Value = CDbl(TextBox14.Text)
            .Offset(, 20).Value = CDbl(TextBox15.Text)
            .Offset(, 21).Value = CDbl(TextBox16.Text)
            .Offset(, 22).Value = CDbl(TextBox17.Text)
            .Offset(, 23).Value = CDbl(TextBox18.Text)
            
        End With
    End With
Grüße Fred


  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Luschi
Geschrieben am: 08.11.2018 15:19:49

Hallo Fred,

beim Auslesen von Textboxen muß man sich schon ein bischen mehr Mühe geben und nicht blindlinks versuchen, Textbox-Werte in Zahlen umzuwandeln. Wenn man keine Vorkehrungen trifft, daß nur Zahlen reingeschrieben werden können, so muß man schon damit rechnen, daß Buchstaben (Großes O statt Zahl 0 oder kleines l statt Zahl 1 oder eben kein, ein oder mehrere Leerzeichen drinstehen.
Google kennt da viele, viele, und noch mehr Lösungsvorschläge, wann man nach diesen Stichworten sucht:
'vba textbox nur zahlen und komma zulassen'

Gruß von Luschi
aus klein-Paris



  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Werner
Geschrieben am: 08.11.2018 15:20:14

Hallo Fred,

teste mal:

Private Sub Daten_übernehmen_Click()
Dim i As Long

With Tabelle21 ' absoluter Bezug zu definierter Tabelle
    With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) ' Bezug zur 1. freien Zeile in Spalte A
        If IsNumeric(Me.TextBox1) Then
            .Value = CDate(Me.TextBox1.Text) ' Wertübergabe an Zelle in Spalte A
        End If
        For i = 2 To 6
            If IsNumeric(Me.Controls("Textbox" & CStr(i))) Then
                .Offset(, i - 1) = CDbl(Me.Controls("Textbox" & CStr(i)))
            End If
        Next i
        For i = 7 To 12
            If IsNumeric(Me.Controls("Textbox" & CStr(i))) Then
                .Offset(, i + 2) = CDbl(Me.Controls("Textbox" & CStr(i)))
            End If
        Next i
        For i = 13 To 18
            If IsNumeric(Me.Controls("Textbox" & CStr(i))) Then
                .Offset(, i + 5) = CDbl(Me.Controls("Textbox" & CStr(i)))
            End If
        Next i
    End With
End With

End Sub
Gruß Werner


  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Fred
Geschrieben am: 08.11.2018 15:42:06

Hallo Werner

Das funktioniert schon echt super es gibt nur noch ein kleines Problem
nicht nur TextBox1 enthält ein Datum sondern auch TextBox7 und TextBox13.
könntest Du das vieleicht noch mal abändern?

Grüße Fred


  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Luschi
Geschrieben am: 08.11.2018 15:47:18

Hallo Fred,

und was hindert Dich daran, bei Textboxen mit Datumswerten die Funktion IsDate() zu verwenden statt IsNumeric().
Außerdem wirst Du schnell feststellen, daß die Kommaproblematik von Werner noch nicht berü _ cksichtigt wurde:

Sub testKommastelle()
    Dim s As String
    
    s = "12.1"
    Debug.Print IsNumeric(s)  'Wahr
    Debug.Print CDbl(s)       'Ergebnis: 121
    
    s = "12,1"
    Debug.Print IsNumeric(s)  'Wahr
    Debug.Print CDbl(s)       'Ergebnis: 12,1
    
    s = "12.1.1"
    Debug.Print IsNumeric(s)  'Wahr
    Debug.Print CDbl(s)       'Ergebnis: 12,1
    
    s = "12,1.1"              'Wahr
    Debug.Print IsNumeric(s)  'Ergebnis: 12,11
    Debug.Print CDbl(s)
    
    s = "12,1,1"
    Debug.Print IsNumeric(s)  'Falsch
    Debug.Print CDbl(s)       'Fehler 13
End Sub
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Fred
Geschrieben am: 08.11.2018 15:58:58

Hallo Luschi

Danke für Deine Antwort.
Der Code von Werner funktioniert sehr gut es werden nur 2 TextBoxen falsch übergeben Die Berechnung mit Kommastelle funktioniert, so aber über die Formatierung der Zelle. da ich ich nur Leihe im Bereich VBA bin kann ich mit Deinem Code leider nichts anfangen .

Grüße Fred


  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Werner
Geschrieben am: 08.11.2018 19:12:42

Hallo Fred,

mal ne bescheidene Frage:
Du stellst immer die letzte belegte Zeile/Zelle bzw. die erste freie Zelle in Spalte A fest. Das hat ja dann zur Folge, dass die Daten in den Tabellenbereichen J:O bzw. S:X an Spalte A ausgerichtet sind.

Trägst du z.B. nur 5 x etwas im Tabellenbereich A:F ein, dann hat das zur Folge, dass der erste Eintrag in den anderen beiden Tabellenbereichen erst ab Zeile 15 erfolgt.

Ist das denn so gewollt?

Gruß Werner


  

Betrifft: AW: Werte werden nicht richtig berechnet
von: Sepp
Geschrieben am: 09.11.2018 18:37:21

Hallo Fred,

schau mal in den Optionen nach und setze die mit 1 gekennzeichnete Option und nimm die mit 2 gekennzeichnete raus.




 ABCDEF
1Gruß Sepp
2
3