Registriert seit: 22.10.2017
	
Version(en): 2016
	
 
	
	
		Hallo,
 Belege-Renovierung.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
	
 
 
	
	
	
		
	Registriert seit: 12.04.2014
	
Version(en): Office 365
	
 
	
	
		Hallöchen 

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
	
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag 28
	  • MdeJong
 
	Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag 28
	  • MdeJong
 
 
 
	
	
	
		
	Registriert seit: 22.10.2017
	
Version(en): 2016
	
 
	
	
		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  
 
 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
	
 
 
	
	
	
		
	Registriert seit: 12.04.2014
	
Version(en): Office 365
	
 
	
		
		
		01.12.2017, 22:43 
(Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2017, 22:44 von Crazy Tom.)
		
	 
	
		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
	
 
 
	
	
	
		
	Registriert seit: 22.10.2017
	
Version(en): 2016
	
 
	
	
		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?
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 12.04.2014
	
Version(en): Office 365
	
 
	
	
		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
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 22.10.2017
	
Version(en): 2016
	
 
	
	
		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 
 
	 
 
	
	
	
		
	Registriert seit: 22.10.2017
	
Version(en): 2016
	
 
	
	
		If Len(TextBox2) = 4 Then
und dann?
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 12.04.2014
	
Version(en): Office 365
	
 
	
	
		schau dir im Eigenschaftenfenster mal den Eintrag
MaxLength
an
dort kannst du die Eingabe auf die gewünschte Anzahl Stellen begrenzen(<-- Basics 

)
	
 
 
	
	
	
		
	Registriert seit: 22.10.2017
	
Version(en): 2016
	
 
	
	
		Private Sub TextBox2_Change()
   If Len(TextBox) = 4 Then        ' es wurden 4Zeichen eingegeben
 
   End If
End Sub
So???