Registriert seit: 22.10.2017
Version(en): 2016
Hallo,
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
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???