Oke...ich dachte, dass man hier im Forum weiß, was ein UserForm und eine TextBox ist....
Ich hab jetzt einfach mal die .xlsm angehängt.
Nach einem Update von Libreoffice (irgendwas mit 7.0 auf die 7.3.5.2) wird jetzt auch das Userform geleert. Es muss aber neu geöffnet werden. Heißt, das letzte UserForm1.Show wird nicht aufgerufen.
Zur Erklärung was da passiert:
Es werden hier jeweils drei Daten (Nummer, Kennzeichen und Datum)per Handscanner eingescannt.
Das Manko ist, dass das "Kennzeichen" und das "Datum" 9stellig vom Scanner kommt. Heißt, ich entferne da einfach ein Zeichen per VBA.
Zusätzlich braucht das Datum noch die gebräuchlichn Punkte. Die füge ich auch per VBA ein.
Aus 30082022 wird eben ein 30.08.2022
Der Einfachheit halber werden die drei Daten (Nummer, Kennzeichen und Datum) in die Zellen A2, B2 und C2 geschrieben.
Und danach werden diese drei Zellen in die erste freie Zeile kopiert, sodass eine Liste entsteht. Ganz oben steht dann immer der als letztes eingetragene Datensatz.
Das alles funktioniert tatsächlich auch ohne Zutun in Libreoffice. Nur eben öffnet sich das UserForm (heißt wohl in Libreoffice Dialog) nicht, nachdem die Datensätze übertragen wurden.
Und hier mal den Code
Code: Alles auswählen
Rem Attribute VBA_ModuleType=VBAFormModule
Option VBASupport 1
Option Explicit
Private Sub CommandButton1_Click()
'TextBox1 = Nummer, wird unbearbeitet eingetragen
Range("A2") = TextBox1.Value
'TextBox2 = Kennzeichen, letzte Ziffer wird entfernt
Dim Kennzeichen As String
Kennzeichen = Left(UserForm1.TextBox2.Text, Len(UserForm1.TextBox2.Text) - 1)
Range("B2") = Kennzeichen
'TextBox3 = Datum, als erstes wird die Stellenzahl um 1 gekürzt
Dim datum As String
datum = Left(UserForm1.TextBox3.Text, Len(UserForm1.TextBox3.Text) - 1)
TextBox3 = datum
'beim Datum wird der erste Punkt nach der zweiten stelle eingefügt
'xxxxxxxx -> xx.xxxxxx
Dim DateP1 As String
If Len(TextBox3.Value) <> 8 Then
Else
TextBox3.Value = Left(TextBox3.Value, 2) & "." & Mid(TextBox3.Value, 3)
End If
'beim Datum wird der zweite Punkt nach der fünften stelle eingefügt
'xx.xxxxxx -> xx.xx.xxxx
Dim DateP2 As String
If Len(TextBox3.Value) <> 9 Then
Else
TextBox3.Value = Left(TextBox3.Value, 5) & "." & Mid(TextBox3.Value, 6)
End If
Range("C2") = TextBox3.Value
'Daten von A2 bis C2 werden selektiert und in die nächste freie Zeile eingefügt
Range("A2:C2").Select
Selection.Copy
'nächste freie Zeile wird ermittelt
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
' Formular wird geleert und neu gestartet
Unload UserForm1
UserForm1.Show
End Sub
Private Sub CommandButton2_Click()
Unload UserForm1
UserForm1.Hide
End Sub