Userform
#1
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  17


Angehängte Dateien
.xlsm   Userform Daten in Tabelle schreiben - Kopie3.xlsm (Größe: 30,25 KB / Downloads: 11)
Antworten Top
#2
Hi,

so:

Code:
.Range(, 6).Value = CDbl(txtMenge.Value)
    .Range(, 7).Value = CDbl(txtEinzelpreis.Value)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
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
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)
Antworten Top
#4
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.
Antworten Top
#5
Das war einmal
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
Zu spät, ich lasse dennoch stehen:

Nicht notwendig, snb!
Siehe mein
CDbl("17,23 €")  → 17,23
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)
Antworten Top
#7
Hallo an die fleißigen Helfer,  21
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  Huh
Antworten Top
#8
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?
Antworten Top
#9
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
Antworten Top
#10
Hallo Uwe,

nun habe ich deinen Code kopiert und eingefügt und ja funktioniert Super. Danke dafür.  100
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. 22  Huh.
Jetzt weiß ich nicht mehr weiter.

Gruß Jo

Blush
Antworten Top


Gehe zu:


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