Zellen überwachen ...

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zellen überwachen ...

Re: Zellen überwachen ...

von clag » Fr, 19.08.2016 20:50

Hallo,

habe da mal eine Beispieldatei erstellt wo ein Listener drei Bereiche in drei Tabellen überwacht und ggf eine Meldung ausgibt.

viel Spaß damit

Re: Zellen überwachen ...

von T.Ruediger » Fr, 19.08.2016 20:43

Hallo Stephan,

mir scheint meine Idee eine doppelte Eingabe damit zu verhindert, bzw. mittels Popup anzuzeigen, ist nicht Praxis tauglich.
Das blockieren der Eingabe war als Mittel zum Zweck gedacht.
Dann werde ich das wohl über die Gültigkeitsprüfung abfangen und dort meine Formel entsprechend anpassen.

Trotzdem Danke für deine Bemühungen.

MfG
T.Rüdiger

Re: Zellen überwachen ...

von Stephan » Do, 18.08.2016 07:40

Code: Alles auswählen

oEvt.source.value

ist nur für jeweils eine Zelle verfügbar, folglich müsstest Du beispielsweise den Listener so registrieren:

Code: Alles auswählen

global oModListener

Sub S_register_ModListener
    oModListener = CreateUNOListener("ModListener_","com.sun.star.util.XModifyListener")
    For i = 0 To 49    
        ocell = thiscomponent.sheets(0).getcellByPosition(2, i) 'Zelle C1 bis C50
        ocell.addModifyListener(oModListener)
    Next i
end sub
wenn Du später die Change haben willst verlässlich auf die jeweils konkrete Zelle zuzugreifen.

Ansonsten ginge auch:

Code: Alles auswählen

global oModListener

Sub S_register_ModListener
    oModListener = CreateUNOListener("ModListener_","com.sun.star.util.XModifyListener")
    ocell = thiscomponent.sheets(0).getcellRangeByName("C1:C50")
    ocell.addModifyListener(oModListener)
end sub

Ich weiß aber nicht wozu die Art der Anzeige per Msgbox gut sein soll, weil das ja jeweils das Blatt blockiert und die MsgBox erst wieder geschlossen werden muss ehe man Weiteres tun kann. Möglicherweise wäre eine Färbung des Zellhintergrundes bei C1:C50 mittels bedingter Formatierung besser?


Gruß
Stephan

Zellen überwachen ...

von T.Ruediger » Mi, 17.08.2016 17:27

Hallo,

in einem Tabelledokument mit 3 Tabellen möchte ich den Wert in den Zellen einer Spalte einer jeden Tabelle, welcher sich aus einer Berechnung ergibt überwachen.
Wenn z.B. in C1 die Formel A1-B1 einen Wert kleiner 0 ergibt soll eine Messagebox mit entsprechender Meldung darauf hinweisen.
Die Überwachung soll sich beispielsweise über den Bereich von C1:C50 erstecken.

Bisher habe ich dazufolgenden Code gefunden:

Code: Alles auswählen

REM  *****  BASIC  *****
global oModListener

Sub S_register_ModListener
    oModListener = CreateUNOListener("ModListener_","com.sun.star.util.XModifyListener")
    ocell = thiscomponent.sheets.getbyname("Tabelle 1").getcellrangebyname("A1")
    ocell.addModifyListener(oModListener)
end sub

Sub ModListener_modified(oEvt)
    if oEvt.source.value < 0 then
        msgbox "Zellwert kleiner 0"
    end if
End Sub

Sub ModListener_disposing
End Sub

Sub S_remove_ModListener
    ocell = thiscomponent.sheets(0).getcellbyposition(0,0)
    ocell.RemoveModifyListener(oModListener)
end sub
Leider fehlen mir die Kenntnisse um den Code anzupassen, bzw. vielleicht ist er so nicht geeignet, denn ürsprünglich wird damit nur eine Zelle überwacht.

Mit freundlichen Grüßen
T.Rüdiger

Nach oben