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!
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
- Sub EinfügenGleichungsnummer()
- Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
- Selection.ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=2, _ '<-- 3 statt 2 für Erstellung dreier Spalten
- NumRows:=1, Format:=wdTableFormatNone, ApplyBorders:=False, ApplyShading _
- :=False, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
- ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
- AutoFit:=False
- Selection.MoveLeft Unit:=wdCharacter, Count:=1
- Selection.SelectColumn
- Selection.Cells.SetWidth ColumnWidth:=CentimetersToPoints(13.25), RulerStyle _
- :=wdAdjustNone
- Selection.Rows.SpaceBetweenColumns = CentimetersToPoints(0)
- Selection.Move Unit:=wdColumn, Count:=1
- Selection.SelectColumn
- Selection.Cells.SetWidth ColumnWidth:=CentimetersToPoints(2), RulerStyle:= _
- wdAdjustNone
- Selection.MoveLeft Unit:=wdCharacter, Count:=2 ' <-- 3 statt 2 für Nummerierung in dritter Spalte
- Selection.SelectColumn
- Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
- Selection.Move Unit:=wdColumn, Count:=1
- Selection.SelectColumn
- Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
- Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
- Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
- Selection.Font.Size = 12
- Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
- Selection.TypeText Text:="("
- 'folgende Zeilen aktivieren wenn Kapitelnummer mit dabei sein soll
- Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
- "STYLEREF ""Überschrift 2"" \n \t ", PreserveFormatting:=True
- Selection.TypeText Text:="."
- Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
- "SEQ Equation \s 1", PreserveFormatting:=True
- Selection.TypeText Text:=")"
- End Sub