Seite 1 von 1
Re: Nummerformate, Alpahnumerische Zeichen
Verfasst: Do, 25.10.2012 17:34
von lorbass
wawiproblem hat geschrieben:der zweite [funktioniert] nicht
Magst du uns nun auch noch verraten, wie sich das Nicht-Funktionieren darstellt? Oder brauchst du keine weitere Unterstützung?
Bedenke, dass wir weder hinter dir stehen noch auf deinem Schoss sitzen und jedenfalls nichts von dem sehen, was du siehst.
Gruß
lorbass
Re: Nummerformate, Alpahnumerische Zeichen
Verfasst: Do, 25.10.2012 18:53
von Karolus
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:
Code: Alles auswählen
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()))
Karolus
Re: Nummerformate, Alpahnumerische Zeichen
Verfasst: Do, 25.10.2012 19:57
von Karolus
Hallo
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
Re: Nummerformate, Alpahnumerische Zeichen
Verfasst: Do, 25.10.2012 21:20
von Karolus
Hallo
Der Code von oben hat ein paar unfeine Nebenwirkungen, neue Version hängt an.
Code: Alles auswählen
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)
Karolus