Wert aus userform in Euro speichern
#1
Hallo,
.xlsm   Belege-Renovierung.xlsm (Größe: 34,03 KB / Downloads: 5)

ich habe eine Userform mit der ich belege einbuche.
Soweit klappt das auch.

Beträge sollen in Euro gespeichert werden. Das wird auch gemacht.

Doch wenn ich einen Beleg buche, der vor einem Zeitraum liegt....z. B. wenn der älteste Beleg 2015 ist und ich einen noch älteren dort einbuche, ist meien Formatierung in Euro der Tabelle wieder weg???

Woran könnte das liegen.

ich habe zu Anfang die Tabelle jede einzelne Spalte so formatiert, das es eigentlich passen muss.

Es passiert halt immer, wenn ich einen noch älteren Beleg buchen will.

Gruß
MdJong
Top
#2
Hallöchen Wink

mach zuerst die Einträge und formatier dann die Zellen
denn wie der Name es schon sagt: es sind TextBoxen
du formatierst erst die Zellen in Euro
danach schreibst du den Text aus der Textbox als Text in die Zelle

Code:
Private Sub CommandButton1_Click()
Dim intAnz As Integer
Dim z As Integer
z = Range("A65565").End(xlUp).Row + 1
   Cells(z, 1) = TextBox1.Value
   Cells(z, 2) = CDate(TextBox2.Value)
   Cells(z, 3) = TextBox3.Value
   Cells(z, 4) = TextBox4
   Cells(z, 5) = TextBox5
   Cells(z, 6) = TextBox6.Value
   Cells(z, 7) = TextBox7.Value
   Range(Cells(z, 6), Cells(z, 7)).NumberFormat = "$#,##0.00_);($#,##0.00)"
Tabelle1.Sort.SortFields.Clear
   Tabelle1.Sort.SortFields.Add Key:=Tabelle1.Range("B2:B" & Range("A65565").End(xlUp).Row) _
   , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   With ActiveWorkbook.Worksheets("Tabelle1").Sort
       .SetRange Tabelle1.Range("A1:G" & Range("A65565").End(xlUp).Row)
       .Header = xlYes
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With
For intAnz = 1 To 7
   Controls("Textbox" & intAnz) = ""
Next intAnz
End Sub

wobei du die Einträge mit den TextBoxen auch gleich in € einfügen könntest mit

Cells(z,6).value = CCur(Textbox6.Value)


MfG Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • MdeJong
Top
#3
Hi Tom....vielen Dank, so ist es besser:

Cells(z,6).value = CCur(Textbox6.Value)

:19:

Ich hab da noch so eine Idee...besser gesagt 2  Blush

Ich sehe das bei uns auf der Arbeit, wir haben da eine Datenbankdatei.
Wenn wir dort Datum eingeben, brauchen wie keinen Punkt dort eingeben, einfach die Zahlen durchweg eintippen.
also gibt man nur 8 Zahlen ein und mehr kann man in der TextBox auch nicht eingeben.

Geht das auch hier in einer Userform "TextBox"?

Gruß
Michael
Top
#4
Hallo

schau mal hier

da brauchst du fürs Datum nur Zahlen eingeben
die Punkte werden automatisch gesetzt


Code:
Private Sub TextBox1_Change()
   If Len(TextBox1) = 2 Then        ' es wurden 2 Zeichen eingegeben
       TextBox1 = TextBox1 & "."    ' Punkt ergänzen
   ElseIf Len(TextBox1) = 5 Then    ' eingegebene Zeichenkette ist 5 Zeichen lang
       TextBox1 = TextBox1 & "."    ' Punkt ergänzen
   End If
End Sub

und hiermit werden auch nur Zahlen in der Textbox zugelassen

Code:
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   Select Case KeyAscii
       Case 48 To 57
       Case Else:
           KeyAscii = 0
           MsgBox "Es sind nur Ziffern erlaubt!", vbInformation, "Hinweis"
   End Select
End Sub


MfG Tom
Top
#5
Hey das klappt ja Prima   

Datum war in TextBox2 ..habe beide Codes angepasst.

Jetzt müsste man die zahlenmenge noch begrenzen also nach Eingabe von 01.12.2017 keine Eingabe mehr?
Und in der Textbox1, welches für das Jahr "2017", in diesem Format auch danach keine Eingabe mehr geht?
Top
#6
Hallo

du willst doch lernen, gelle?
dann schau doch mal was im Textbox_Change abgefragt wird
das Zauberwort heißt: Len
überleg mal was man damit anstellen könnte


MfG Tom
Top
#7
Also was ich dir sagen kann, ist das man mit Len ....die minimale oder maximale Anzahl an zugelassenen Zeichen für eine TextBox angeben kann...aber wie ich das VBA sagen soll...kein Ahnung Dodgy
Top
#8
If Len(TextBox2) = 4 Then

und dann?
Top
#9
schau dir im Eigenschaftenfenster mal den Eintrag

MaxLength

an
dort kannst du die Eingabe auf die gewünschte Anzahl Stellen begrenzen(<-- Basics Wink)
Top
#10
Private Sub TextBox2_Change()
   If Len(TextBox) = 4 Then        ' es wurden 4Zeichen eingegeben
 
   End If
End Sub

So???
Top


Gehe zu:


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