1.000er Trennzeichen in Word automatisch setzen

20/10/2008 - 16:33 von Stefan Xhonneux | Report spam
Hallo, wie kann ich Word davon überzeucgen, dass Trennzeichen bei 1000 stets
angegeben werden z.B. wie die Autokorrektur-Funktion bei Brüchen. Ich hàtte
also gerne, dass mir Word automatisch alle drei Zeichen in Zahlenfolgen einen
Punkt setzt:

z.B.:
1.000
1.500.450
3.559
usw.

Gibt es da eine Möglichkeit über Platzhalter in den Autokorrekturoptionen zu
gehen oder was wàre mit VBA?

Vielen Dank
 

Lesen sie die antworten

#1 Helmut Weber
20/10/2008 - 18:42 | Warnen spam
Hallo Stefan,

das ist viel komplizierter als Du meinst,
weil man da von rechts nach links vorgehen muss,
davon abgesehen, dass damit auch Jahreszahlen und
zum Beispiel ISBN-Bezeichnungen und Artikelnummern
mit tausender Punken gegliedert würden.
Sobald Du "1000" getippt hàttest, würde daraus 1.000.
Wenn Du aber eine weitere Null anhàngst,
müsste der Punkt wieder entfernt werden und
eine Stelle weiter rechts wieder eingefügt werden.

Nur so zum Spaß hier eine Routine,
die alle Ziffernfolgen mit mehr als drei Ziffern
in der gewünschten Weise gliedert.
Für die Word-Gruppe im Gegensatz zur Word-VBA-Gruppe
sicherlich der Overkill. Aber wann weiß ja nie...

Kommetierung des Codes gibts nur auf besonderen Wunsch. :-)

Sub Test456b()
Dim rTmp As Range
Set rTmp = ActiveDocument.Range
With rTmp.Find
.Text = "[0-9]{4;}"
.MatchWildcards = True
While .Execute
rTmp.Text = MitPunkt(rTmp.Text)
rTmp.Collapse Direction:=wdCollapseEnd
Wend
End With
End Sub
' --
Public Function MitPunkt(sTmp As String) As String
Dim i As Long
Dim j As Long
Dim x As Long
i = Len(sTmp) \ 3
j = (Len(sTmp) Mod 3)
If j > 0 Then
i = i + 1
ReDim strArr(1 To i) As String
For x = i To 1 Step -1
If x > 1 Then
strArr(x) = Right(sTmp, 3)
sTmp = Left(sTmp, Len(sTmp) - 3)
Else
strArr(x) = Left(sTmp, j)
End If
Next
End If
If j = 0 Then
ReDim strArr(1 To i) As String
For x = i To 1 Step -1
strArr(x) = Right(sTmp, 3)
sTmp = Left(sTmp, Len(sTmp) - 3)
Next
End If
sTmp = ""
For x = LBound(strArr) To UBound(strArr)
sTmp = sTmp & strArr(x) & "."
Next
If Right(sTmp, 1) = "." Then
sTmp = Left(sTmp, Len(sTmp) - 1)
End If
MitPunkt = sTmp
End Function

Na denn, viel Spaß.


Gruß

Helmut Weber, MVP WordVBA

Vista Small Business, Office XP

Ähnliche fragen