Entwickler-Ecke
Alle Sprachen - Alle Plattformen - Zellen können in VBA nicht bearbeitet werden
Kirk1701A - Do 22.04.21 20:40
Titel: Zellen können in VBA nicht bearbeitet werden
Hallo zusammen,
ich arbeite gerade an meinem Makro für eine Briefmaske. Ich habe im Briefkopf eine Tabelle drin, von der eine bestimmte Zelle, abhängig der Angaben gelöscht und daher die direkt darüber etwas vergrößert, oder gar nichts verändert werden soll.
Den Code habe ich bereits geschrieben, um die Zelle zu löschen/die Zelle zu vergrößern. Leider kommt bei der Ausführung der Fehler, dass eine Sammlung fehle, aber ich weiß nicht, welche Sammlung genau damit gemeint ist (Laufzeitfehler 5941). Folgenden Code habe ich diesbezüglich geschrieben:
Quelltext
1: 2:
| ActiveDocument.Tables(1).Rows(2).Cells(4).Delete Call ActiveDocument.Tables(1).Rows(2).Cells(3).SetHeight(InchesToPoints(2.2), wdRowHeightExactly) |
Folgende Zelle soll gelöscht werden: Spalte 2 Zeile 4
Folgende Zelle soll vergrößert werden: Spalte 2 Zeile 3
Ich gehe hier bei Tables, Rows und Cells aus, dass diese nicht Nullbasierend sind (wie sie auch bei anderen Sammlungen sind).
Hat jemand eine Idee? Das ist quasi das letze bissche Code, um mein Makro zu vervollständigen. Danach ist es fertig.
MfG
Kirk
Th69 - Fr 23.04.21 08:56
Du kannst doch auch VBA debuggen?
Irgendeines der Objekte in ActiveDocument.Tables(1).Rows(2).Cells(x) wird wohl nicht existieren (NULL sein).
Mit Sammlung ist vom englischen übersetzt "collection" ("table", "list", "map") gemeint.
Kirk1701A - Fr 23.04.21 14:20
Hallo Th69,
danke für deine Antwort.
Ich habe es mit Debugging herausgefunden, dass es an diesen beiden Zeilen liegt. Hmm... Ok, dann ist mit Sammlung wohl wirklich das gemeint. Ich zeige hier mal eine Zeichnung, wie die Tabelle optisch aussieht (die rote Zelle soll vergrößert werden in der Höhe, die blaue Zelle soll gelöscht werden):
Ich weiß nur nicht, was syntaktisch oder logisch falsch sein sollte. Diese Zellen existieren von Anfang an.
MfG
Th69 - Fr 23.04.21 14:46
Meinst du nicht
Columns(2) statt
Rows(2)?
Du könntest (bzw. solltest) auch die beiden Code-Zeilen aufteilen und den gemeinsamen Teil nur einmalig lesen:
Quelltext
1: 2:
| table = ActiveDocument.Tables(1); // ... |
So kannst du dann auch explizit auf NULL testen (und gleiches dann für die weiteren Unterobjekte).
Aber mit einem Haltepunkt in dieser Zeile solltest du es auch per Debugger sehen.
Kirk1701A - Fr 23.04.21 15:08
Th69 hat folgendes geschrieben : |
Meinst du nicht Columns(2) statt Rows(2)? |
Ist es nicht eigentlich egal? Aber um das kurz zu erwähnen, egal ob Columns oder Rows, beides hat den selben Effekt.
Th69 - Fr 23.04.21 15:26
Kann es sein, daß es links eine Untertabelle ist? D.h. du müßtest erst auf Zeile 1, Spalte 2 zugreifen und dann dessen Tabelle auswerten.
Aber wie gesagt, mit dem Debugger kannst du es selber einfach herausfinden...
Kirk1701A - Fr 23.04.21 15:40
Kann es eventuell daran liegen, dass die Tabelle in der Kopfzeile liegt? Denn selbst die Sammlung Tabelle ist leer. Da sind keine Objekte enthalten.
Kirk1701A - Fr 23.04.21 15:58
Sorry, habe eben falschen Status angegeben.
Also könnte es vielleicht an der Kopfzeile liegen?
Kirk1701A - Fr 23.04.21 16:10
Hmm... Ja, das ist logisch. Ich war mir nur nicht sicher und wusste jetzt auch aus dem ff nicht wirklich, wie ich das Objekt anspreche. Danke dir
Kirk1701A - Fr 23.04.21 16:28
Quelltext
1: 2: 3: 4:
| With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Tables(1).Columns(1) .Cells(4).Delete Call .Cells(3).SetHeight(CentimetersToPoints(2.2), wdRowHeightExactly) End With |
Also, ich habe das so geändert. Ich verstehe nur nicht, wieso "Sections" leer ist. Ich begreife das nicht wirklich, da ich keinen Umbruch oder dergleichen benutze.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!