Formeln nummerieren

  • Word

    Formeln nummerieren

    Hallo,

    Ich verwende VBA 7.0 zur Erstellung eines Makros für Word 2010. In meiner Worddatei sind jeweils in einer eigenen Zeile mit dem Formeleditor erstellte Formeln. Diese sollen nun in der Form (Kapitelnummer.fortlaufende Nummer) nummeriert werden, wobei die Nummerierung in jedem Kapitel neu beginnen soll. Um auch eine ansehbare Formatierung zu erzeugen, möchte ich die Formeln in eine unsichtbare Tabelle mit 3 Spalten und einer Zeile einfügen. Die Formel soll mittig in der mittleren Spalte (und somit auch mittig in der ganzen Zeile) stehen und die Nummerierung rechtsbündig in der dritten Spalte. Im Internet habe ich den am Ende meines Posts stehenden Code gefunden. Dieses Makro erstellt zwei Spalten und fügt den Buchstaben der links neben dem Cursor steht in die erste und eine Nummerierung in die zweite Spalte ein.

    Mit den Pfeilen und Kommentaren möchte ich zeigen wie weit ich bei der Abänderung des Makros schon gekommen bin. Bis jetzt schaffe ich es, dass 3 statt 2 Spalten erzeugt werden und die Nummerierung in der letzten Spalte landet.

    Probleme habe ich bereits beim Ausführen der zweiten Codezeile. Es kommt die Fehlermeldung "Laufzeitfehler '4605': Diese Methode oder Eigenschaft ist nicht verfügbar, weil dieser Befehl in Mathematik nicht verfügbar ist..". Ich habe versucht das Makro zeilenweise auszuführen und glaube den Grund zu kennen: In der ersten Codezeile wird der Cursor ein Zeichen nach links bewegt, doch anstatt links neben der Formel, steht der Cursor dann links neben dem letzten Zeichen in der Formel und markiert nur dieses statt der ganzen Formel. Anschließend würde das Makro die Tabelle in die Formel einfügen - was natürlich nicht klappt. Wie kann ich den Cursor vor die Formel bzw. zum Anfang der Zeile bringen?

    Da das Makro mit einem Textbuchstaben keine Probleme hat habe ich es ausgeführt bin auf weitere 'Probleme' gestoßen. Der ausgeschnittene Textbuchstabe wird in der ersten Spalte eingefügt - wie kann ich dies auf die zweite Spalte ändern?

    Wie kann man die Größe der Spalten so anpassen, dass die Formel nicht nur mittig innerhalb der zweiten Spalte sondern wirklich mittig innerhalb der Zeile des Dokuments positioniert wird?

    Das untenstehende Makro habe ich nur verwendet da meine VBA Kenntnisse nicht groß genug sind um mein Vorhaben alleine zu verwirklichen und ich es eben gefunden habe - falls jemand Hilfe weiß die nicht auf der Änderung des folgenden Codes beruht, nehme ich diese natürlich auch gerne an!

    Visual Basic-Quellcode

    1. Sub EinfügenGleichungsnummer()
    2. Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    3. Selection.ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=2, _ '<-- 3 statt 2 für Erstellung dreier Spalten
    4. NumRows:=1, Format:=wdTableFormatNone, ApplyBorders:=False, ApplyShading _
    5. :=False, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
    6. ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
    7. AutoFit:=False
    8. Selection.MoveLeft Unit:=wdCharacter, Count:=1
    9. Selection.SelectColumn
    10. Selection.Cells.SetWidth ColumnWidth:=CentimetersToPoints(13.25), RulerStyle _
    11. :=wdAdjustNone
    12. Selection.Rows.SpaceBetweenColumns = CentimetersToPoints(0)
    13. Selection.Move Unit:=wdColumn, Count:=1
    14. Selection.SelectColumn
    15. Selection.Cells.SetWidth ColumnWidth:=CentimetersToPoints(2), RulerStyle:= _
    16. wdAdjustNone
    17. Selection.MoveLeft Unit:=wdCharacter, Count:=2 ' <-- 3 statt 2 für Nummerierung in dritter Spalte
    18. Selection.SelectColumn
    19. Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    20. Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    21. Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    22. Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    23. Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
    24. Selection.Move Unit:=wdColumn, Count:=1
    25. Selection.SelectColumn
    26. Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    27. Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    28. Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    29. Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    30. Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
    31. Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
    32. Selection.Font.Size = 12
    33. Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
    34. Selection.TypeText Text:="("
    35. 'folgende Zeilen aktivieren wenn Kapitelnummer mit dabei sein soll
    36. Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
    37. "STYLEREF ""Überschrift 2"" \n \t ", PreserveFormatting:=True
    38. Selection.TypeText Text:="."
    39. Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
    40. "SEQ Equation \s 1", PreserveFormatting:=True
    41. Selection.TypeText Text:=")"
    42. End Sub