Hallo
Im angehängten Tabellendokument ist das Tabellenereignis 'Inhalt geändert' mit einem Makro verknüpft das jede Eingabe von 3 Buchstaben gefolgt von mindestens 11 Ziffern entsprechend umstrickt.
Der Sourcecode:
import re
rex = re.compile(r'(\w{3})(\d{2})(\d{3})(\d{2})(\d{3})(\d)')
def specialformat(context):
context.setString( rex.sub(r'\1-\2-\3,\4-\5-\6',
context.getString()))
Wie bereits im der letzten Antwort beschrieben, ist das Tabellenereignis 'Inhalt geändert'*** von Tabelle1 des Dokuments mit der Ausführung des Codes verknüpft. Daher musst du eigentlich nur deine Eingaben tätigen.
***mglw. gibts diese Tabellenereignisse in deiner OOo-version noch nicht (siehe →Rechtsklick_Tabellenreiter→Tabellenereignisse ??
Mit Sicherheit wird es ab AOO3.4 bzw. seit LO3.4 angeboten.
Karolus
LO7.4.7.2debian 12(bookworm) auf Raspberry5 8GB (ARM64) LO25.2.3.2 flatpakdebian 12(bookworm) auf Raspberry5 8GB (ARM64)
import re
rex = re.compile(r'^(\w{3})(\d{2})(\d{3})(\d{2})(\d{3})(\d)$')
def specialformat(event):
for cell in itersingle(event):
try:
if not cell.Tokens and rex.match(cell.String):
cell.setString( rex.sub(r'\1-\2-\3,\4-\5-\6', cell.String))
except:
pass
def itersingle( selection ):
for r in xrange(selection.Rows.getCount()):
for c in xrange(selection.Columns.getCount()):
yield selection.getCellByPosition(c, r)