Macro starten bei Änderung in einem Feld

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Benutzeravatar
MrSpock
**
Beiträge: 47
Registriert: Sa, 12.03.2005 18:46

Macro starten bei Änderung in einem Feld

Beitrag von MrSpock »

Hallo,

ich habe eine Tabelle, in der ich Ergebnisse eintrage (Kickerspiele). Beim Drücken eines Buttons, wird die zugehörige Tabelle erstellt. Funktiert alles. Ich möchte jetzt aber, dass ich nicht mehr den Button drücken muss, sondern beim Ändern des Ergebnisses automatisch das Macro zur Erstellung der Tabelle aufgerufen wird. Habe es über die Definition einer Gültigkeit versucht. Dabei habe ich eine Bedingung erstellt, die nie erfüllt wird (Zulassen: Wert > 100) und dann in der Fehlerbehandlung das Macro aufgerufen.) Irgendwie funktiniert das aber nur bei jeder zweiten Änderung. Außerdem ist natürlich nicht wirklich elegant. Wer kenn einen besseren Wert.
\\// Live long and prosper

MrSpock
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Mr. Spock,

Code: Alles auswählen

Wer kenn einen besseren Wert.
Soll wohl "Weg" heissen, oder? Na ja, wenn du mit dem Button nicht einverstanden bist - einen Listener schreiben. Den kannst du an verschiedene Ereignisse binden - zum Beispiel an das Verlassen der Zelle.
Ist aber alles nicht so ganz "ohne" und setzt Erfahrung im Umgang mit der API vorraus.
Such einfach mal im Forum - ich glaube, es gab mal einen Thread, der einen Listener für eine Calczelle beschrieben hat.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Benutzeravatar
MrSpock
**
Beiträge: 47
Registriert: Sa, 12.03.2005 18:46

Beitrag von MrSpock »

Hallo Thomas,

ja, sollte natürlich "Weg" heißen.

Das mit der Gültigkeitsprüfung scheint jetzt doch zu funktionieren.

Ich habe dabei nur noch ein Problem: Nach Ausführung des Macros steht der Cursor (also die aktuelle Zelle) an der falschen Stelle.

Ich möchte das Macro jetzt am Anfang und am Ende leicht modifizieren, so dass sich das Programm am Anfang die aktuelle Cursor Position merkt und am Ende dort wieder den Cursor hinsetzt. Ist bestimmt einfach, aber ich bekomme es nicht hin. :?
\\// Live long and prosper

MrSpock
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Mr.Spock,
st bestimmt einfach, aber ich bekomme es nicht hin.
Na, dann poste den Code doch mal :-)

Da können wir bestimmt leicht helfen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Benutzeravatar
MrSpock
**
Beiträge: 47
Registriert: Sa, 12.03.2005 18:46

Beitrag von MrSpock »

Hallo Thomas,

zum Merken habe ich folgende Zeilen benutzt:

Code: Alles auswählen

Dim Doc As Object 
Dim Sheet As Object
Dim oRow, oCol as Integer
Doc = ThisComponent 
Sheet = Doc. Sheets (0)
oRow=Doc.getCurrentSelection().getCellAddress().Row
oCol=Doc.getCurrentSelection().getCellAddress().Column
und zum Setzen des Cursors:

Code: Alles auswählen

dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = Chr(oCol+65) & oRow+1
' msgbox args3(0).Value
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
Funktioniert jetzt auch, aber es ist unschön,dass ich die Zelle über die Reihen- und Spaltennummer auslese und dann in eine Buchstaben/Zahlenkombination setze.
\\// Live long and prosper

MrSpock
Antworten