VBA mit Word-Tabelle (Word 97)

Hallo Fachleute,

ich kann Makros aufzeichnen und noch einigermaßen verstehen, aber für mein momentanes Problem brauche ich Eure Hilfe.
Wie muß der Code lauten, wenn ich in einer Tabelle (5 Spalten, 8 Zeilen) vor einer angeklickten Zelle eine leere Zelle hinzufügen möchte, so dass der Inhalt der darunterliegenden Zellen sich immer um eins nach unten verschiebt und das letzte Tabellenfeld in dieser Spalte gelöscht wird?
Das Einfügen schaffe ich noch, aber wie verhindere ich, dass die Tabelle nach dem Einfügen mehr als 8 Zeilen hat? Wie kann ich die letzte Zelle einer Spalte ansprechen?

Vielen Dank für Eure Hilfe
MM

Hi Magic Woman,

nicht vom Fachmann, aber als workaround für Dich vielleicht zu gebrauchen:

Du setzt in Spalte 1 der Zeile 7 Deiner Tabelle eine Textmarke mit dem Namen „TM“. Das Makro

Sub test()
Selection.InsertRowsAbove 1
Selection.GoTo What:=wdGoToBookmark, Name:=„TM“
With ActiveDocument.Bookmarks
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Selection.Rows.Delete
ActiveDocument.Bookmarks(„TM“).Delete
With ActiveDocument.Bookmarks
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Selection.MoveUp Unit:=wdLine, Count:=1
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:=„TM“
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
End Sub

fügt über der Cursor-Position eine neue Zeile ein, geht zur TM, löscht die Zeile, in der TM steht, und fügt TM in der Zeile darüber ein. Vielleicht hilfts ja.

Gruß Wilhelm

Hallo MM,

hier die Kurzfassung:

mit

Selection.InsertRowsAbove 1

fügst du - wie schon beschrieben - oberhalb des Cursors eine neue Zeile ein. Dabei ist es egal, ob die Zeile markiert ist oder nicht.
Nun hat die Tabelle 9 Zeilen. Die letzte Zeile der Tabelle 1 sprichst du mit

ActiveDocument.Tables(1).Rows.Count

an. Da du dies nun weißt musst du nur noch genau diese Zeile löschen. Dies tust du (ganz allgemein) mit

ActiveDocument.Tables(1).Rows(ZeilenNummer).Delete

Es reicht für deine Zwecke eigentlich zu, wenn du bei „Zeilennummer“ eine 9 schreibst, denn nur eine Zeile wird immer neu hinzugefügt…

Die elegante Schreibweise - die überall funktioniert, egal wieviele Zeilen die Tabelle hat - lautet jedoch

ActiveDocument.Tables(1).Rows(ActiveDocument.Tables(1).Rows.Count).Delete

Ich hoffe, dass diese zwei Zeilen dir vollkommen ausreichen, um das Problem zu lösen.

Gruß Tobi@s

Vielen Dank euch beiden.
Hat mir sehr geholfen, besonders die Codes von Tobi@s!
Gruß
MM