Hallo, einen schönen Sonntagmorgen,
nach Anleitung eines Videos aus dem Internet von
Kai Weissmann,
habe ich mir eine Userform nachgebaut, mit dem Werte in eine Exceltabelle eingetragen werden.
Das funktioniert auch einwandfrei, mein Problem ist allerdings das die Zahlenwerte, die in die Exceltabelle eingetragen werden als Text dargestellt werden.
Damit kann nicht weitergerechnet werden,
z.B. Menge * Einzelpreis = Gesamtpreis
Wie müsste der Code angepasst werden damit die
Eingabefelder Einzelpreis und
Gesamtpreis als
Währung deklariert sind und berechnet werden.
Wie gesagt habe ich die Userfom und den Code nachgebaut und an meine Tabelle angepasst,
aber meine VBA-Kenntnisse reichen nicht um den Code anzupassen.
Vielleicht hat mal jemand Zeit der sich mit VBA auskennt, mal zu schauen.
Die Datei hänge ich mal mit an.
Gruß Jo
Moin!
Nicht falsch verstehen!
Ich verstehe nicht, was an einem Userform so toll sein soll, dass gerade Leute, die sich damit so gar nicht auskennen, so gerne damit herumspielen.
Zum Thema (die Datei habe ich nicht angesehen):
Eine Textbox liefert erstaunlicherweise Text.
Um einen Text als Dezimalzahl an eine Zelle zu übergeben, muss ich
• erst einmal mittels If IsNumeric(Textbox) Then prüfen, ob sich der Text umwandeln lässt
• um ihn dann mittels CDbl(Textbox) zur Dezimalzahl zu machen.
Das Zahlenformat Währung gibst Du natürlich vorher der Zelle mit (manuell, ginge zwar auch per VBA, nur wozu?).
Du kannst auch einer Textbox ein "Format" mittels Format() mitgeben.
Denn schließlich ergibt
IsNumeric("17,23 €") → True
Folglich funktioniert
CDbl("17,23 €") → 17,23
(Zellformat siehe oben)
Gruß Ralf
Hi,
dafür gibt es die Umwandlungsfunktionen (Typenkonvertierungsfunktonen):
Typkonvertierungsfunktionen (VBA) | Microsoft Learn
Dafür musst Du aber beim Übertrag in die Zellen vorher prüfen, ob die Werte auch umwandelbar sind, z.B. mit IsNumeric, IsDate etc, denn beispielsweise
CLng("x")
führt naturgemäß zu einem Typenfehler.
Zu spät, ich lasse dennoch stehen:
Nicht notwendig, snb!
Siehe mein
CDbl("17,23 €") → 17,23
Hallo an die fleißigen Helfer,
vielen Dank an Alle.
den Tipp von Edgar habe ich umgesetzt und es hat funktioniert, vielen Dank Edgar.
Hallo Ralf, du hast ja Recht,
aber Eingaben zu machen über eine UF hat mich schon immer interessiert, wollte das mal umsetzen und hat auch funktioniert bis auf die Textfelder, die ja Zahlenwerte beinhalten sollen um damit weiter zu rechnen.
Ich habe es auch mal mit der Excel eigenen Maske versucht, aber das ist dasselbe, kommt auch Text raus.
Naja, über die Funktion CBdl umwandeln funktioniert das ja.
So weit so gut, jetzt habe ich aber noch eine Frage: wie müsste ich denn den VBA Code
erweitern/umschreiben damit in der Spalte mit dem
Gesamtpreis automatisch die
Menge mit dem
Einzelpreis multipliziert wird?
Gruß Jo
Hi,
Zitat:Naja, über die Funktion CBdl umwandeln funktioniert das ja.
Wie genau hast Du denn jetzt Fehleingaben berücksichtigt, ohne dass Dir der Code abschmiert?
Hallo,
mal noch ein anderer Weg:
Code:
Private Sub btnAnlegen_Click()
Dim i&, arr(): arr = Array(CDate(txtDatum), txtHändler.Value, txtArtikel.Value, txtEinheit.Value, CbKategorie.Value, txtMenge, txtEinzelpreis, txtGesamtpreis)
For i = 5 To 7
If IsNumeric(arr(i).Value) Then arr(i) = CDbl(arr(i))
Next i
Tabelle1.ListObjects(1).ListRows.Add.Range.Resize(1, UBound(arr) - LBound(arr) + 1) = arr
End Sub
Gruß Uwe
Hallo Uwe,
nun habe ich deinen Code kopiert und eingefügt und ja funktioniert Super. Danke dafür.
Aber wie könnte man das machen, damit in der Spalte Gesamtpreis die Menge mit dem Einzelpreis multipliziert wird. Ich habe versucht die Formel in die Zeile einzufügen, wird aber dann beim Code ausführen, indem eine neue Zeile eingefügt wird, überschrieben.
.
Jetzt weiß ich nicht mehr weiter.
Gruß Jo