Wert aus Textbox als Währung in Zelle
#1
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
Top
#2
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
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 ;)
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • cysu11
Top
#5
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
Top
#6
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
Mit freundlichen Grüßen  :)
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Zwergel für diesen Beitrag:
  • cysu11
Top


Gehe zu:


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