Hallo Wissende,
prinzipiell für Word 2000, gilt aber für alle Versionen.
Kann man mit Vba automatisch auf eine Zellwertänderung wie in Excel reagieren?
In dieser Doc habe ich einen workaround gebastelt.
http://www.herber.de/bbs/user/73600.doc
Sie hat nachfolgende Codes.
Im Code (derzeit) auskommentiert könnte ich mir anzeigen lassen welche Spaltennummer die Zelle der Tabelle hat, die ich anklicke.
Achso, das Ziel ist, wenn jmd. in der oberen Zeile der tab Werte einträgt und bei „Version“ was reinschreibt, soll dann automatisch in der unteren Tab der höchste/unterste Wert von Spalte 4 erscheinen.
Mein Code läuft an sich gut, reagiert auf Klicks in die Tabelle hinein und aktualisiert bei jedem Klick das was in der unteren Tabelle steht.
Eine saubere Lösung wäre aber, sofort und nur wenn in Spalte 4 ein Wert geändert wird, sollte die untere Tab geändert werden.
Ich brauch also ein Klassenmodul oder sonstwas was auf Zellwertänderung in Wordtabellen reagiert.
Hat jmd. dafür Codeschnipsel?
Ein Zusatzproblem bei vielen Tabellen, wie finde ich anhand eines Klicks in eine beliebige Tabelle heraus wie die Tabelle heißt, bzw. den Index?
Mit „Sel.Information(wdWithInTable)“ finde ich nur heraus DAS in eine beliebige Tabelle geklickt wurde, abewr nicht in welche Tabelle.
Ich weiß viele Fragen, ihr müßt sie ja auch nicht sofort lösen, in 1 Stunde reicht mir auch *bescheiden bin* *grien*
Danke ^ Gruß
Reinhard
In ThisDocument:
Option Explicit
Private Sub Document\_Open()
Call TabellenUeberwachungEin
End Sub
In Modul1:
Option Explicit
Dim X As New clsTabelle
Sub VersionErmitteln()
Dim Zei As Long
With ActiveDocument.Tables(1)
For Zei = 2 To .Rows.Count
If Replace(Replace(.Cell(Zei, 4).Range, Chr(13), ""), Chr(7), "") = "" Then Exit For
Next Zei
If Zei 2 Then
ActiveDocument.Tables(2).Cell(1, 1).Range = Replace(Replace(.Cell(Zei - 1, 4).Range.Text, \_
Chr(13), ""), Chr(7), "")
Else
ActiveDocument.Tables(2).Cell(1, 1).Range = ""
End If
End With
End Sub
Sub TabellenUeberwachungEin()
Set X.oApp = Word.Application
End Sub
In Klassenmodul clsTabelle:
Option Explicit
Public WithEvents oApp As Word.Application
Private Sub oApp\_WindowSelectionChange(ByVal Sel As Selection)
If Sel.Information(wdWithInTable) = True Then
'MsgBox Sel.Information(wdStartOfRangeColumnNumber)
'MsgBox "In Tabelle geklickt"
Call VersionErmitteln
End If
End Sub