Clever-Excel-Forum

Normale Version: Wert aus Textbox als Währung in Zelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Excelforum,


bräuchte mal wieder Hilfe bei ein Problemchen ;)

Mit folgendem Code(Codeteil) schreibe ich die Daten aus den TextBoxen in Tabellenblatt "Produkte"!

Code:
With ThisWorkbook.Sheets("produkte")
         For y = 1 To 58
         TextBox58.Value = Environ("Username") & " " & Date & " " & Time
        .Cells(rngId.Row, y) = ArtikelDB.Controls("Textbox" & y).Value
        .Cells(rngId.Row, 30).Value = 1 * .Cells(rngId.Row, 30).Value
        .Cells(rngId.Row, 31).Value = 1 * .Cells(rngId.Row, 31).Value
        .Cells(rngId.Row, 32).Value = 1 * .Cells(rngId.Row, 32).Value
        .Cells(rngId.Row, 33).Value = 1 * .Cells(rngId.Row, 33).Value
Next y
End With

In den TextBoxen 30, 31, 32 und 33 habe ich Zahlen stehen, diese würde ich gerne als Währung in den jeweiligen Zellen im Tabellenblatt schreiben!
1. Frage: geht es eleganter als ".Cells(rngId.Row, 33).Value = 1 * .Cells(rngId.Row, 33).Value" für nur normale Zahlenformat, also als Zahlen mit denen man dann auch rechnen kann?
2. Frage: wie muss ich das ändern damit um als Währungsformat die Werte zu bekommen?

Vielen Dank schon im Voraus
VG
Alexandra
Hallo Alexandra,

Problem dabei ist, dass Excel den "Text" im Textfeld auch als solchen interpretiert. Wenn Du die Zahl dort ohne Dezimalstellen eingibst, dürfte es klappen. Mit Dezimalstellen müsstest Du im Textfeld statt des Kommas einen Punkt verwenden oder das beim Eintrag oder nachträglich umwandeln. Du hast es mit * 1 gelöst, andere Variante wäre
... = Replace(Sheets(1).TextBoxes(1).Text, ",", ".")
Übrigens würden die Einträge bei Dir 58x neu gesetzt, bei jedem Schleifendurchlauf. Du könntest die 4 Zeilen gleich nach der Schleife platziern und nicht innerhalb.
Hi,

Code:
With ThisWorkbook.Sheets("produkte")
    ArtikelDB.TextBox58.Text = Environ("Username") & " " & Date & " " & Time
    For y = 1 To 58
        .Cells(rngId.Row, y) = ArtikelDB.Controls("Textbox" & y).Value
    Next y
    For y = 30 To 33
         .Cells(rngId.Row, y).Value = CDbl(.Cells(rngId.Row, y).Value)
         .Cells(rngId.Row, y).NumberFormat = "#,##0.00 €"
    Next
End With

sollte so gehen ist aber nicht getestet ;)
Hallo

oder vielleicht auch so

Code:
With ThisWorkbook.Sheets("produkte")
    ArtikelDB.TextBox58.Text = Environ("Username") & " " & Date & " " & Time
    For y = 1 To 29
        .Cells(rngId.Row, y) = ArtikelDB.Controls("Textbox" & y).Value
    Next y
    For y = 30 To 33
        .Cells(rngId.Row, y) = CCur(ArtikelDB.Controls("Textbox" & y))
    Next
    For y = 34 To 58
        .Cells(rngId.Row, y) = ArtikelDB.Controls("Textbox" & y).Value
    Next y
End With

MfG Tom
Hallo Ihr Lieben,


vielen Dank für eure HIlfe und Antworten, habe den Code von Tom genommen, da dieser für mich am einfachsten ist und einfach nachvollziehen kann!

Ein allgemeine Frage habe ich noch und zwar zu:

For y oder For i oder Dim i usw. sind diese i oder y immer nur den jeweiligen Code gültig oder kann es passieren wenn z.B. mehrere Codes in ein Userform stecken, dass ein Code vielleicht das falsche i oder y benutzte aus ein andere Code weiter oben z.B. !

Bitte keine Augenroll :)


Danke Euch Allen für eure Hilfe

LG
Alexandra
Hi Alexandra,

zu deiner Frage bezüglich Variablen: Es hängt davon ab, was dú im Code definiert hast.

Variablen werden allgemein nur in dem betreffenden Codeteil genutzt.
Willst du das anders nutzen muß die Variable anders definiert werden, z.B. als Public

schau mal hier: https://support.microsoft.com/kb/843144/de