Hallo Manfred,
ich füge über Vba mittels .Paste eine Exceltabelle in Word
ein. Das klappt.
Schon eklig. Aber egal. Jetzt hast Du eine Tabelle.
für das was ich vorhabe muß ich Text und Tabelle mixen, also mit beiden Welten klarkommen, denn Word kann mir zuwenig in der Tabelle, und Excel ist keine Textverarbeitung (natürlich ist es mir am liebsten ich könnte alles mit Excel machen, Hauptgrund dazu ich kenne mich in Word nicht so aus, das geht aber nicht)
Nun füge ich manuell oder über vba in die letzte Spalte eine
Formel ein, z.B. „=Summe(Links)“, das klappt auch, die Summen
werden korrekt berechnet.
Wie genau machst Du das? Ich mache das mal so:
ActiveDocument.Tables(1).Cell(1,3).Formula
„=SUM(LEFT)“
Danach habe ich ein Feld in der Tabelle stehen, erkennbar am
grauen Hintergrund.
Seltsam, deine Version hatte ich auch,
also so: .Cell(intZei, 5).Formula ="=Summe(Über)"
aber das passte dem Debugger nicht, er zwang mich zu:
.Cell(intZei, 5).Formula Formula:="=Summe(Über)"
wie du unten im Code siehst.
Liegt das an der Version, am deutsch/englischen? Ich glaube es war Word97 mit ich experimentierte.
Nur, ändere ich Werte in der Tabelle interessiert das die
Summenfunktionen überhaupt nicht.
Ja, das ist erst mal so.
Habe ich befürchtet, da ich in Vba nichts fand was wie Ereigniscode aussah, also eine abfangbare Reaktion auf das Change-Ereignis einer Zelle.
Frage1: wie löse ich eine Neuberechnung von Formeln in einer
Tabelle aus, manuell und wichtiger per Vba?
Alles markieren, wenigstens aber das Feld, und dann F9.
Ich habe heute morgen viel Zeit damit verbracht, und siehe da, ich fands sogar in der Hile, also erst Alles markieren, dann F9.
Oder einfach per VBA
über
ActiveDocument.Fields.Update
wenn Du
gleich alle Felder aktualisieren möchtest.
Jepp, auf Fields.Update stiess ich auch.
Im anderen Code wird nur die Tabelle die ich will markiert, aktualisiert, wie kriege ich denn die Markierung/Selection wieder weg in Vba?
Selection.MoveLeft Unit:=wdCharacter, Count:=1
klappt zwar, sieht mir aber nicht wie der Königsweg aus.
Beispiel: Lösche alle Inhalte, nicht die Zellen, der zweiten
Zeile:
ActiveDocument.Tables(1).Rows(2).select
Selection.delete unit:=wdCharacter,count:=1
Okay, das kann ich im Code benutzen um ihn zu verkürzen.
Noch ein einfacher Tip am Rande: Zeichne das als Makro auf,
was Du machen willst. Schaue dann im VBA-Editor nach, was
genau Word daraus gemacht hat. So habe ich es auch gerade
gemacht. In Word-VBA bin ich nicht so fit. Analog zu Excel-VBA
hätte ich nämlich zuerst etwas aus der .Clear-Reihe (wie
.ClearContents) oder so erwartet/vermutet…
Ja, der Makrorekorder, sehr gewöhnungsbedürftig, er zeichnet wohl nichts auf was ich mit der Maus mache? Oder gibt es da einen Trick?
Ja, mit Word-Vba bin ich auch noch sehr in der Reinschnupperphase:smile:
Deshalb geht es sehr mühsam Codezeile für Codezeile voran, jeden Befehl erstmal in der Hilfe in der Hilfe nachlesen, dann ggfs. Makro dazu aufzeichnen, die Aufzeichnung in der Hilfe nachschlagen usw.
Dumm ist halt wenn ich was suche und den Namen nicht kenne und der Makrorekorder mir nicht hilft:frowning:
Achja, die IntelliSense rettet mich oft.
Frostern
Reinhard, der dann doch schauen muß was denn dicke Bücher zu Word97-Vba so kosten bei ebay
Sub SummeEinfuegen()
Dim intZei As Integer
If Tabellennummer = 0 Then
MsgBox „Tabelle nicht gefunden“
Exit Sub
End If
With ActiveDocument.Tables(Tabellennummer)
For intZei = 2 To .Rows.Count - 1
.Cell(intZei, 5).Select
Selection.Delete
.Cell(intZei, 5).Formula Formula:="=Produkt(B" & intZei & „;D“ & intZei & „)“
Next intZei
.Cell(intZei, 5).Select
Selection.Delete
'.Cell(intZei, 5).Formula Formula:="=Summe(E2;E" & .Rows.Count - 1 & „)“
.Cell(intZei, 5).Formula Formula:="=Summe(Über)"
End With
End Sub
’
Sub TabelleAktualisieren()
If Tabellennummer = 0 Then
MsgBox „Tabelle nicht gefunden“
Exit Sub
End If
ActiveDocument.Tables(Tabellennummer).Select
Selection.Fields.Update
'Selection.Fields.ToggleShowCodes
'Selection.EscapeKey ’ bringt nix !?
Selection.MoveLeft Unit:=wdCharacter, Count:=1 'Markierung aufheben
End Sub