ich den folgenden VBA-Code habenWort VBA Tabstop falsches Verhalten
Private Sub CreateQuery_Click()
Dim doc As Document
Dim i As Integer
Set doc = ActiveDocument
i = doc.Paragraphs.Count
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
For j = 0 To 1000
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
With doc.Paragraphs(i)
.Range.Font.Italic = True
.Range.ListFormat.ApplyBulletDefault
.Indent
.Indent
.TabStops.Add Position:=CentimetersToPoints(3.14)
.TabStops.Add Position:=CentimetersToPoints(10)
.TabStops.Add Position:=CentimetersToPoints(11)
End With
For k = 0 To 10
With doc.Paragraphs(i)
.Range.InsertAfter "testState" & vbTab & CStr(doc.Paragraphs(i).Range.ListFormat.CountNumberedItems) & vbTab & CStr(doc.Paragraphs.Count)
.Range.InsertParagraphAfter
End With
i = i + 1
Next
i = doc.Paragraphs.Count
With doc.Paragraphs(i)
.Range.ListFormat.ApplyBulletDefault
.TabStops.ClearAll
.Outdent
.Outdent
End With
Next
i = doc.Paragraphs.Count
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
End Sub
Grundsätzlich ist dieser Code nur n Zahlen von Linien mit dem spezifischen Format druckt.
- Bullet list
- Indented
- und TabStops
alt text http://files.lans-msp.de/vbscript_tabstops.png
Der Code funktioniert perfekt für eine beliebige Anzahl von Zeilen, dann aber an einem gewissen Punkt Wort hält nur die TabStops Anwendung .
Ich weiß, wenn ich das Format nicht alle 10 Zeilen zurücksetzen würde, würde der Code scheinbar für immer funktionieren (wirklich?!?). Aber die alle 10 Linienbremse ist ein Muss.
Die genaue Zeilennummer, bei der alles zusammenbricht, hängt von der Größe des Arbeitsspeichers ab. Auf meinem Arbeitscomputer mit 1GB funktioniert es nur bis etwa Zeile 800 (wie Sie sehen können). Mein Computer zu Hause mit 4 GB zeigte dieses Verhalten nicht. Aber ich bin mir sicher, es hätte es auch gezeigt, wenn ich es lange genug laufen lassen hätte, denn in meinem Produktionscode (der etwas komplexer ist) zeigt mein Heimcomputer auch das Problem.
Ist das eine Art Speicherleck oder etwas? Was habe ich falsch gemacht? Ist vielleicht, Gott behüte, VBA selbst der Schuldige hier?
Ich frage mich auch, warum auf der Erde jeder * jede einzelne Zeile * formatieren möchte, wenn sich ihr Format überhaupt nicht unterscheidet. – Tomalak
Es ist nicht jede Zeile. Ich beziehe das Format einfach jeden Block von 10 Zeilen neu. Im echten Drehbuch geht es zwischen den Blöcken weiter. – eric
Das hat das Problem für mich gelöst. Ich kann sehen, dass dies der sauberere Weg ist, das ist großartig. Aber ich denke immer noch, dass Word hier eine Art Speicherleck hat. Vielleicht hat diese "Lösung" die Grenzen ein wenig verschoben ... Vielen Dank trotzdem, mein Problem ist weg und das ist das Wichtigste! – eric