Löschen in Tabellen

01/10/2007 - 16:21 von Thomas Lanz | Report spam
Hallo zusammen

Ich benutze Word2003 mit Windows XP und habe ein merkwürdiges Problem: Wenn
ich eine Tabelle (Table.Select) auswàhle und dann die Selektion

lösche (Selection.Delete), wird nur der Inhalt der Tabelle gelöscht (Siehe
Script unten: Test1).

Wenn ich nun aber ein Bookmark auf die ganze Tabelle setze, dann das
Bookmark auswàhle (Bookmark.Select) und dann die Selektion lösche

(Selection.Delete), wird nicht nur der Inhalt sondern auch die Tabelle
selbst gelöscht. Dies passiert, obschon die Selection beidesmal scheinbar

genau gleich gesetzt ist und ich beidesmal mit Selection.Delete lösche
(Siehe Test3). Was làuft da anders?

Nun, bekanntlich sollte man mit Ranges anstatt der Selection arbeiten. Doch
wenn die Tabelle direkt gelöscht wird (Table.Range.Delete) oder via

Bookmark (Bookmark.Range.Delete), aber auch via Selection (Table.Select und
dann Selection.Range.Delete), wird nur immer der Inhalt nicht aber

die Tabelle gelöscht (Siehe Test2).

Mein Problem: Ich möchte die Tabelle und den Inhalt (also so wie in Test3)
löschen, will aber nicht mit dem Selection-Object arbeiten sondern mit

Ranges.

Wenn ich anstatt Delete mit Cut arbeite, dann funktioniert es wie gewünscht,
ich möchte aber die Zwischenablage des Benutzers nicht veràndern.

Weitere Einschrànkung: Der Bereich, den ich löschen möchte ist nicht immer
eine Tabelle, manchmal ist es nur ein Teil einer Tabelle, manchmal ist

er ganz ausserhalb der Tabelle, manchmal ist aber auch ein Teil des Bereichs
innerhalb und ein Teil ausserhalb einer Tabelle, es könnten sich

auch mehrere Tabellen im Bereich befinden.

Das Ganze tönt vielleicht etwas verworren, doch ich hoffe, man erkennt den
Gedanken dahinter.

Besten Dank für Eure Hilfe!

Viele Grüsse
Thomas

Mein Test-Script:

Sub DeleteInTable()
Documents.Add
Selection.TypeParagraph
ActiveDocument.Tables.Add Selection.Range, 5, 5, wdWord9TableBehavior
ActiveDocument.Bookmarks.Add "NewBM", ActiveDocument.Tables(1).Range

' Test1
ActiveDocument.Tables(1).Rows(3).Cells(3).Range.Text = "Hallo"
ActiveDocument.Tables(1).Select
Selection.Delete
MsgBox ("Test1: Nur der Inhalt der Tabelle wurde gelöscht")

' Test2
ActiveDocument.Tables(1).Rows(3).Cells(3).Range.Text = "Hallo"
ActiveDocument.Bookmarks("NewBM").Range.Delete
MsgBox ("Test2: Nur der Inhalt der Tabelle wurde gelöscht")

' Test3
ActiveDocument.Tables(1).Rows(3).Cells(3).Range.Text = "Hallo"
ActiveDocument.Bookmarks("NewBM").Select
Selection.Delete
MsgBox ("Test3: Inhalt und Tabelle wurden gelöscht")

End Sub
 

Lesen sie die antworten

#1 Helmut Weber
01/10/2007 - 16:53 | Warnen spam
Hallo Thomas,

alles an der Frage habe ich zwar nicht verstanden,
aber wenn das Folgende hilft, is gut.

ActiveDocument.Tables(1).Range.Delete ' inhalt
ActiveDocument.Tables(1).Delete ' alles


Gruß

Helmut Weber, MVP WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003 (US-Versions)

Ähnliche fragen