JurPC Web-Dok. 171/2002 - DOI 10.7328/jurpcb/2002177166

Ralph Matzky *

Schluss mit der Routinearbeit in Word - Tabellen und VBA

JurPC Web-Dok. 171/2002, Abs. 1 - 23


Tabellen eignen sich hervorragend, um Textelemente in einem Word-Dokument(1) übersichtlich anzuordnen. Die Listenerstellung bildet dabei ein Hauptanwendungsbereich. Das Formatieren (Gestalten) der Tabellen ist relativ einfach und zumeist selbsterklärend. Je größer die Tabellen sind und je einheitlicher die Gestaltung ausfallen soll, umso mehr verwandelt sich das Formatieren in lästige Routinearbeit. Dies muss nicht so sein. Der Einsatz von Makros kann das Formatieren erheblich beschleunigen. Dieser Beitrag zeigt an praktischen Beispielen, wie Makros unter VBA(2) routinemäßige Formatierungen übernehmen können. Die Darstellung orientiert sich an dem eher programmierunerfahrenen Anwender. Der ablauflogischen Erfassung einer Routine folgt die programmtechnische Umsetzung.JurPC Web-Dok.
171/2002, Abs. 1

1. Tabellen mit "Zebra-Effekt"

Eine Routineaufgabe ist es, in einer beliebigen Tabelle die Zeilen bzw. Spalten abwechselnd zu schattieren ("Zebra-Effekt")(3). Das Makro muss zuerst die maximale Anzahl von Zeilen und Spalten ermitteln. Anschließend bedarf es einer Abfrage, bei welcher Zeile beginnend in welchem Intervall bis zu welcher Zeile die Schattierung angewendet werden soll. Der Anwender könnte also z.B. bestimmen, dass ab Zeile 3 bis zur vorletzten Zeile jede vierte Zeile schattiert wird. Dasselbe Verfahren wird für die Spalten eingerichtet. Die Kombination von Zeilen und Spalten ermöglicht das systematische Formatieren einzelner Zellen. Nachdem die notwendigen Informationen erfasst wurden, muss das Makro mit dem Formatieren beginnen. Dazu ist es erforderlich, stets genau die Zellen "anzusteuern", die den angegeben Intervallen entsprechen. Realisiert wird dies durch den Einsatz zweier Schleifen. Diese werden solange durchlaufen, bis die jeweils letzte Zeile bzw. Spalte erreicht wurde.Abs. 2

2. Ein neues Programmmodul

VBA ist eine objektorientierte Programmiersprache, d.h. im Vordergrund stehen einzelne Objekte. Solche Objekte sind zum Beispiel das gesamte Dokument, eine Tabelle, jeweils die Zeilen und Spalten einer Tabelle wie auch jede einzelne Tabellenzelle. Ein Objekt hat bestimmte Eigenschaften, die das "Aussehen" desselben bestimmen oder einfach nur Informationen enthalten(4). Für die weitere Makroerstellung sind nachfolgende Objektbezeichnungen wesentlich:Abs. 3
(5)
Makros lassen sich durch den "Makrorecorder"(6) direkt aufzeichnen bzw. durch die Eingabe des Quellcodes im Visual Basic-Editor erstellen. Im Weiteren wird der Editor verwendet.Abs. 4
Dieser wird in Word über EXTRAS, MAKROS, VISUAL BASIC-EDITOR(7) gestartet. Er besitzt unter anderem ein Projekt-Fenster, in dem ein Eintrag auf die Dokumentenvorlage "Normal" verzeichnet ist. Darunter befindet sich ein Verweis auf "Modul" mit dem weiteren Hinweis auf "NewMacros"(8). Dies ist der Ort, an dem das neue Makro entsteht(9). Ein Doppelklick auf "NewMacros"

eröffnet daneben eine Eingabemöglichkeit.
Abs. 5
Jedes Makro wird mit dem Befehl "sub" - gefolgt vom Makronamen - eingeleitet und mit "end sub" abgeschlossen. Dazwischen steht der eigentliche Programmcode(10). In der zweiten Zeile wird die Variable "Endzeile" mit der gesamten Zeilenanzahl belegt. Die Anweisung "selection.tables(1).rows.count" bedeutet nichts anderes, als dass von der gewählten Tabelle (selection.tables(1)) die Zeilen (rows) angesteuert und die Information "Anzahl" (count) abgefragt werden. Man erkennt deutlich, dass die einzelnen Objekte von links nach rechts spezieller werden, wobei die Eigenschaft bzw. Information (hier: count) den Abschluss bildet. Getrennt werden die Bestandteile nur durch einen Punkt. Für die maximale Spaltenanzahl erfolgt das Gleiche in der dritten Zeile.Abs. 6
Beginnend bei Zeile 4 bis Zeile 15 werden nun nacheinander die einzelnen benötigten Informationen (z.B. Intervall) vom Dokumentenbearbeiter abgefragt. Das Ergebnis wird jeweils einer gesonderten Variablen zugeordnet(11). Die Abfrage erfolgt über den Befehl "InputBox", der ein kleines Dialogfenster öffnet, um so dem Anwender Gelegenheit für die Dateneingabe zu geben. Die Einträge in der Klammer sind nicht zwingend, beeinflussen aber das Aussehen der Dialogbox. Der erste Eintrag (z.B. "Erste Zeile angeben!") erscheint als Aufforderung an den Benutzer, während der zweite in der Titelzeile des Dialogfenster erscheint. Die Einträge müssen in Anführungszeichen stehen und

durch Kommata voneinander getrennt werden. Der dritte Eintrag bewirkt, dass dem Anwender ein Wert bereits vorgegeben wird (hier z.B. 1). Die jeweils folgende Programmzeile sorgt für eine ordnungsgemäßen Abbruch, wenn der Benutzer auf die Taste "Abbrechen" klickt. Mit "If ... Then" ist es möglich, auf verschiedene Ereignisse bedingt zu reagieren. "Then end" führt zum Abbruch des Makros, während mit "if ErsteZeile = abbrechen" überprüft wird, ob die Variable "ErsteZeile" den Abbrechen-Wert hat. Da in dem vorliegenden Makro insgesamt sechs Werte abgefragt werden, bedarf es entsprechend vieler InputBox-Befehle und Abbruch-Abfragen.
Abs. 7
Die eigentliche Formatierungsroutine ist in den Zeilen 16 bis 19 enthalten. Das Grundprinzip besteht in der Anwendung von zwei Schleifen. Durch den Befehl "For ... to ... Step" erreicht man, dass das Makro eine beliebige Anzahl von Wiederholungen durchläuft. Begonnen wird mit dem Wert der Variable, die nach "for" folgt. Bei jedem Schleifendurchlauf wird mit "next" der Wert um die Angabe "Step" erhöht. Dies erfolgt bis zum Erreichen des Wertes nach "to" . Mit "for i = 1 to 10 step 2" erreicht man beispielsweise, dass die Schleife genau fünfmal durchlaufen wird. Die Variable i wird um zwei erhöht, solange bis der Wert 10 erreicht ist. Nach diesem Prinzip werden die jeweiligen Zeilen bzw. Spalten durchlaufen. Deshalb hat der Bearbeiter in den vorherigen Dialogboxen angegeben, bei welcher Zeile bzw. Spalte begonnen bzw. aufgehört werden und welches Intervall ("Step") das Makro durchlaufen soll.Abs. 8
Die eigentliche Aufgabe besteht nun darin, das Aussehen der betreffenden Zelle - die sich aus Kombination von Zeile und Spalte ergibt - zu verändern. Mit dem Befehl "Selection.Tables(1).Cell(z, s)." wird die Zelle "identifiziert". Anschließend erfolgt die Auswahl des Formatierungsmerkmals "shading.texture" (Schattierung), dessen konkreter Wert mit "= wdTexture-25Percent" eingestellt wird. Die Zelle ist nunmehr mit einer 25-prozentigen Schattierung formatiert. In der Zeile 19 erfolgt eine zweite Formatierung, indem dort die Vordergrundfarbe variiert wird.
Abs. 9

3. Nachträgliche Modifizierungen

Das vorliegende Makro kann den eigenen Bedürfnissen unkompliziert angepasst werden. So ist es zum Beispiel möglich, andere oder weitere Formatierungen "miterledigen" zu lassen. Der Programmcode ist dazu in den Zeilen 16 bis 19 zu modifizieren oder zu ergänzen. Soll die Schattierung statt 25 nur 15 Prozent betragen, so ist der Befehls-Ausdruck "wdTexture25Percent" zu ersetzen. Zur Vermeidung von Schreibfehlern empfiehlt es sich, den bisherigen Befehls-Ausdruck einschließlich des Gleichheitszeichens zu löschen und anschließend letzteres erneut einzugeben. Daraufhin öffnet sich ein Dialogfenster, welches die zulässigen Befehlsausdrücke enthält. Das Anklicken mit der Maus fügt den gewünschten Ausdruck ein. Aber auch das Hinzufügen grundsätzlich anderer Formatierungselemente ist realisierbar. Wichtig ist nur die Überlegung, dass der Ausgangspunkt die Tabellenzelle ist (cell(z,s)). Eine Schlüsselrolle erfüllt das Eingeben des nachfolgenden Punktes. Wie bereits bei der Schattierung öffnet sich ein Dialogfenster, welches sämtliche objektbezogenen Eigenschaften (Informationen oder Methoden) auflistet. Für eine Tabellenzelle wären dies neben "Shading" u.a. "Height" (Höhe), "Width" (Weite) oder "VerticalAlignment" (vertikale Ausrichtung). Sofern ein Formatierungselement weitere Untereigenschaften besitzt, sind diese wiederum durch die Eingabe eines Punktes abrufbar. So hat zum Beispiel das Element "Shading" die Untergruppen "Texture" oder "ForegroundPatternColor" (Vordergrundfarbe). Der konkrete Wert wird dann wieder mit dem Gleichheitszeichen zugewiesen. Auf diese Art und Weise lassen sich die verschiedensten Formatierungen zuweisen. Erforderlich ist für jede neue Formatierungsanweisung eine neue Zeile im Programmcode(12).Abs. 10
Die bisherigen Ausführungen betreffen nur die Gestaltung der Tabellenzellen als solche. Unberücksichtigt blieb bisher die Formatierung des Inhaltes, die daneben oder ausschließlich möglich ist. Um den Zelleninhalt zu erfassen, muss die jeweilige Zelle (als ganzes) mit dem Befehl "selection.tables(1).cell(z,s).select" markiert werden. Die Markierung ("selection") bzw. der markierte Zelleninhalt sind nun das Objekt, dessen Eigenschaften verändert werden können. Interessant sind u.a. die Absatzformatierung ("ParagraphFormat") mit der Ausrichtung ("Alignment") bzw. die Gestaltung der Schrift ("Font"). Die Zuweisung der Formatierung bezieht sich immer auf das Objekt "selection". Wie bereits erwähnt, wird durch die Eingabe eines Punktes ein weiteres Dialogfeld mit den zulässigen Eigenschaftskategorien geöffnet. Die Zuweisung von konkreten Eigenschaftswerten wird durch das Gleichheitszeichen eingeleitet. Bei Eigenschaften, die nur wahr oder falsch sein können, z.B. das Vorliegen von Fettdruck, sind die Parameter "True" bzw. "False" zu verwenden.Abs. 11
Das vorstehende Beispiel bewirkt, dass neben einer 10-prozentigen (aquafarbenen) Schattierung die Zelleninhalte in der Schriftart "Timbrel", fett und 15 Punkte groß ausgegeben werden. Anschließend wird der Inhalt zentriert ausgerichtet.Abs. 12

4. Starten des Makros

Nach dem Sichern des fertigen Makros mit DATEI, NORMAL SPEICHERN kann der Editor geschlossen werden. Vor dem Starten des Makros wird der Cursor in die betreffende Tabelle gesetzt. Das Betätigen von EXTRAS, MAKRO, MAKROS...(13) bringt ein neues Fenster mit den vorhandenen Makros hervor. Nach der Auswahl von "Tabelle_Schattierung" und dem Klick auf AUSFÜHREN verrichtet das Makro seinen Dienst.Abs. 13

5. Rahmengestaltung

Der Rahmen ist neben dem Einsatz von Farbe bzw. Schattierung ein sehr wesentliches Formatierungsmerkmal von Tabellen. Durch ihn erhalten die einzelnen Zeilen und Spalten klare Abgrenzungen. Rahmen können in Breite, Farbe und Linienart unterschiedlich gestaltet werden. Vor der Codeerstellung muss man sich Klarheit darüber verschaffen, welches Tabellen-(Teil)-Objekt erfasst werden soll. Neben der (Gesamt)-Tabelle eignen sich auch Spalten bzw. Zeilen sowie einzelne Zellen für das Gestalten von Rahmen. Der Unterschied besteht darin, dass bei einer einzelnen Zelle nur der äußere Rahmen (sichtbar) modifizierbar ist. Sind jedoch gleichzeitig mehrere Zellen markiert - z.B. bei einer Spaltenmarkierung -, so kann der (äußere) Rahmen um die Markierung abweichend von den Zellenbegrenzungen innerhalb des markierten Zellenbereichs gestaltet werden. Im Folgenden werden einige Möglichkeiten zur Auswahl von Tabellenbereichen dargestellt.Abs. 14

a) Auswahl von Tabellenbereichen

Die Tabelle wird über die Objektbezeichnung "tables(index)"anvisiert. Der Wert "index" ergibt sich aus der Reihenfolge der Tabelle im Dokument. Er ist regelmäßig "1". Nur bei mehreren Tabellen in einem Dokument kann er davon abweichen. Folglich lautet die Anweisung zur Tabellenauswahl "activedocument. tables(1)". In Verbindung mit einem InputBox-Befehl(14)

kann der Benutzer angeben, welche von mehreren Tabellen er ansteuern möchte. Die Anweisung "activedocument.tables(index)" eignet sich in Verbindung mit einer "for... next"-Schleife sehr gut, um mehrere Tabellen in einem Dokument nacheinander zu formatieren(15). Geht es jedoch darum, immer nur die markierte Tabelle zu gestalten, so bietet sich die alternative Anweisung "selection.tables(1)" (16) an. Bearbeitet wird dann die Tabelle, in welcher sich der Cursor befindet. Dies hat den Vorteil, dass der Makrobenutzer nicht auf die absolute Position der Tabelle im Dokument achten braucht. Nachdem die Tabelle derart bestimmt wurde, könnte man dazu übergehen, deren Rahmen zu bestimmen. Dies erscheint jedoch wenig zeitsparend, da die Gesamttabelle auch auf herkömmliche Art und Weise zügig "eingerahmt" werden kann. Vorteile entstehen nur, wenn mehrere Zeilen/Spalten ausgewählt werden müssen. Indem man an die oben dargestellte Tabellenauswahl - getrennt durch einen Punkt - den Befehl "rows(index)" bzw. "column(index)" anhängt, wird die - durch den Wert "index" - bestimmte Zeile bzw. Spalte ausgewählt. Mit "activedocument.tables(2).rows(3)" wird die dritte Zeile in der zweiten Tabelle des aktiven Dokuments ausgewählt. Ähnlich erfolgt die Auswahl einzelner Zellen. Dazu bedient man sich des Befehls "cell(zeile, spalte)", wobei für "zeile" bzw. "spalte" die entsprechenden Zellenkoordinaten einzutragen sind.
Abs. 15
Der Einsatz von "For ... Next"-Schleifen bietet sich zur Auswahl von mehreren Zeilen/Spalten bzw. Zellen geradezu an(17). Im vorstehenden Beispiel wird der Inhalt jeder zweiten Zeile in der mit dem Cursor ausgewählten Tabelle in kursiver Schrift (italic) dargestellt.Abs. 16

b) Rahmenelemente

Rahmenformate erreicht man über das Objekt "border". Wie bereits mehrfach erwähnt, wird auch dieses Objekt durch an einen Punkt an die vorher getätigte Tabellen(bereichs)-Auswahl angehängt, so z.B. "selection.tables(1).columns(1).border". Mit "border" werden alle Rahmenseiten erfasst. Einzelne Rahmenseiten(18) formatiert man jeweils getrennt, indem man nach dem Ausdruck "border" in Klammern die gewünschte Seite bezeichnet(19). In der folgenden Tabelle sind die relevanten Seitenbezeichnungen aufgeführt.Abs. 17
Die konkrete Rahmengestaltung erreicht man über die Eigenschaften "color" bzw. "colorindex" (Farbe), "linestyle" (Rahmenart) und "linewidth" (Rahmenbreite)(20). Mit einem nachfolgenden Gleichheitszeichen wird der gewünschte Wert (Farbe, Breite) zugewiesen. Wie bereits erwähnt, muss bei Markierungen über eine Zelle hinweg zwischen dem äußeren bzw. inneren Rahmen unterschieden werden. Demzufolge lauten die Eigenschaften "outsidelinestyle" bzw. "insidelinestyle" usw. In der folgenden Tabelle befindet sich ein Beispiel dafür, wie nacheinander der äußere, dann der innere Tabellenrahmen, anschließend die rechte Seite jeder zweiten Spalte und zuletzt die untere Seite jeder fünften Zeile (im 3D-Effekt) formatiert wird.Abs. 18
Mit derartigen Makros erreicht man eine gleichmäßige und zügige Formatierung großer Tabellen, ohne dass man sich jedes Mal den Algorithmus neu erarbeiten muss. Durch das Ändern bzw. Hinzufügen von Eigenschaften ist das Makro jederzeit an die persönlichen Bedürfnisse anpassungsfähig.Abs. 19

6. Automatische Einträge in Tabellen

In der vorstehenden Auflistung soll - wie in der ersten Makrocodedarstellung - jede Zeile in einer gesonderten Spalte durchnummeriert werden. Man kann diese Aufgabe auf herkömmliche Art bewerkstelligen, indem man eine neue Spalte einfügt und diese mit der Funktion FORMAT, NUMMERIERUNG UND AUFZÄHLUNGSZEICHEN… von oben beginnend mit Zahlen ausfüllen lässt. Problematisch wird es dann, wenn die Tabellenzeilen anschließend sortiert werden sollen. In diesem Fall würde die Nummerierung automatisch aktualisiert werden. Sofern dies nicht gewünscht wird(21), müssen die Einträge manuell erfolgen. Zügiger geht es mit einem kleinen Makro. Mit den folgenden Befehlen lässt sich diese Routineaufgabe schneller bewerkstelligen. "Activedocument.tables(1).Columns.Add" fügt eine Spalte am rechtsseitigen Tabellenende hinzu. Soll die Spalte jedoch vor einer bestimmten anderen Spalte eingefügt werden, so bedarf es der Ergänzung "beforecolumn:=ActiveDocument.Tables(1).Columns(index)". Der Wert "index" steht hier für die Spalte, vor der die neue hinzugefügt wird. Für das Einfügen von Inhalt in eine Zelle ist der Befehl "cell(zeile, spalte).range.text" zuständig. Es folgt ein Gleichheitszeichen und der neue Text ist in Anführungszeichen zu setzen. Für die automatische Nummerierung muss man also nur dafür sorgen, dass das Makro in jede Zeile eine Ziffer einträgt, die um 1 erhöht wird. Dazu bietet sich wieder einmal eine "for... next"-Schleife an. Das folgende Listing enthält den notwendigen Makrocode:Abs. 20
Ergänzend sei bemerkt, dass mit dem Befehl in der dritten Zeile die Breite der neuen Spalte auf 0,75 cm eingestellt wird(22). Ein letztes Beispiel soll den effektiven Einsatz von Makros verdeutlichen. Angenommen in einem Dokument befinden sich mehrere Tabellen. Jede von ihnen enthält in der letzten Zelle(23) einen Zahlenwert (beispielsweise als Summe einer Auflistung). Diese Zahlen sollen in eine neue Tabelle aufgenommen und dort addiert werden. Realisierbar ist dies, indem ma mittels einer Schleife die letzten Zellen aller Tabellen "abfragt" und in eine neue Tabelle "eintragen lässt".Abs. 21
Der Befehl "set" in den Zeilen 4 und 6 bedeutet eine Variablendefintion, so dass man sich im weiteren Verlauf einige Schreibarbeit erspart und das Makro übersichtlicher wird(24). Das Einfügen einer Formel zum Addieren der Einzelbeträge wird in Zeile 17 realisiert.Abs. 22

7. Zusammenfassung

Wie gezeigt, eignet sich Visual Basic for Application hervorragend, um die Formatierung größerer Tabellen zu beschleunigen. Die Vorteile liegen auf der Hand. Der Benutzer wird von lästiger Routinearbeit befreit und es wird eine ungleiche Formatierung durch Nachlässigkeit weitgehend vermieden. Der konsequente Einsatz führt daneben zu einem einheitlichen Dokumentenformat. Weitere interessante Einsatzgebiete sind die Fußnotenbearbeitung sowie Datei- und Druckfunktionen. VBA bietet ein fast unerschöpfliches Reservoir an Möglichkeiten, die tägliche Arbeit in Word zu vereinfachen und zu rationalisieren.
JurPC Web-Dok.
171/2002, Abs. 23

Fußnoten:

(1) Word wie auch VBA sind eingetragene Warenzeichen der Fa. Microsoft.
(2) VBA = Visual Basic for Application.
(3) Ein Beispiel für diese Anwendung ist die Tabelle mit dem Quellcode.
(4) So enthält zum Beispiel eine Tabelle die Informationen über die maximale Zeilen- bzw. Spaltenanzahl.
(5) Zur eindeutigen Identifizierung einer Zelle wird in Klammer jeweils zuerst die Zeilennummer und - getrennt durch ein Komma - die Spaltennummer angegeben.
(6) Der Makrorecorder "zeichnet" die Befehls- und Tastaturaktionen auf und speichert sie ab. Das Ergebnis kann dann im VB-Editor nachbearbeitet werden. Dieses Verfahren eignet sich bei Befehlswiederholungen nur bedingt, da Schleifenroutinen zusätzlicher Quellcode sind.
(7) Alternativ eignet sich auch die Tastenkombination ALT-F11. Einträge in KAPITÄLCHEN bezeichnen jeweils die Menüeinträge.
(8) Unter Umständen kann dieser Eintrag auch "Modul 1" lauten.
(9) Sofern der Eintrag "Modul" nicht existiert, ist über das Menü EINFÜGEN, MODUL ein neues Modul zu erstellen.
(10) Beim Abschreiben des Codes aus der Tabelle ist darauf zu achten, dass nur die Einträge der rechten Spalte erfasst werden. Der Inhalt jeweils einer Zelle ist in eine Textzeile (ohne Zeilenumbrüche) zu übernehmen. Sämtlicher Code kann auch bei http://www.uni-greifswald.de/~ls2/matzky/vba.html heruntergeladen werden. Die Zeilennummern sind nur zum besseren Verständnis der Erläuterung eingefügt worden.
(11) Der Variablenname selbst ist frei wählbar, so dass auch andere Bezeichnungen gewählt werden können. Wesentlich ist nur, dass im weiteren Verlauf (Zeilen 16 ff.) dieselben Namen verwendet werden.
(12) Anstelle oder zusätzlich zu den Zeilen 18 und 19. Bei umfangreicheren Formatierungen kann man die Schreibweise kürzer fassen, indem man einleitend den Ausdruck "With" verwendet. Danach folgt die gleichbleibende Zeichenkette (ohne Punkt am Ende), z.B. "selection.tables(1).cell(z,s) ". Die unterschiedlichen Elemente folgen - wie beschrieben - jeweils auf den nächsten Zeilen, eingeleitet durch einen Punkt. Nach den Anweisungen muss der Block mit dem Befehl "End with" abgeschlossen werden. Vgl. das Beispiel in der nächsten Grafik.
(13) Alternativ kann auch die Tastenkombination ALT+F8 betätigt werden.
(14) Siehe dazu oben Abs. 5 ff.
(15) Siehe dazu das Beispiel-Makro oben Abs. 21 f.
(16) Die Anweisung "selection" bezeichnet immer ein Objekt (Text, Textblöcke, aktuelle Seite), was vom Dokumentenbenutzer ausgewählt wurde. Der in Klammern stehende Wert "1" sorgt dafür, dass die erste Tabelle gewählt wird, falls der Benutzer mehrere Tabellen markiert haben sollte.
(17) Mit "Selection.Tables(1).Rows.Count" bestimmt man die maximale Zeilenanzahl.
(18) Ab Word 2000 können auch diagonale Linien in einer Zelle formatiert werden.
(19) Das Schreiben der ersten Klammern führt dazu, dass ein Dialogfeld geöffnet wird, indem die gewünschte Seite angeklickt wird.
(20) Es empfiehlt sich, jeweils zuerst die Eigenschaft "LineStyle" und erst danach "LineWidth" bzw. "ColorIndex" zu bestimmen. Bei einer anderen Reihenfolge kommt es u.U. zu keinem Erfolg.
(21) Weil zum Beispiel die Nummer ein dauerhaftes Sortierkriterium und nicht bloß die aktuelle Positionsangabe darstellen soll.
(22) Bei der Schreibweise ist darauf zu achten, dass die Zahlenangabe einen Punkt und kein Komma enthält! Der Wert "z" ist im Makrocode nicht in Anführungszeichen zu setzen, da in der Zelle der jeweilige Variablenwert und nicht der Buchstabe "z" erscheinen soll.
(23) Die letzte Zelle befindet sich in der letzten Zeile der rechten Spalte.
(24) Die Anweisung in Zeile 10 ist deshalb erforderlich, da ansonsten in der Variablen "wert" neben den Zahlen noch zwei Absatzmarkierungen enthalten sind. Mit "left" wird genau die Zeichenkette verwendet, die um 2 kürzer als die Gesamtlänge ("len") ist.
* Dr. iur. Ralph Matzky ist wissenschaftlicher Assistent am Lehrstuhl für Strafrecht, insb. Wirtschafts- und Steuerstrafrecht von Prof. Dr. Wolfgang Joecks in Greifswald.
[online seit: 29.07.2002]
Zitiervorschlag: Autor, Titel, JurPC Web-Dok., Abs.
Zitiervorschlag: Matzky, Ralph, Schluss mit der Routinearbeit in Word - Tabellen und VBA - JurPC-Web-Dok. 0171/2002