Makro: Position von auslösendem Push-Button bestimmen
Moderator: Moderatoren
Makro: Position von auslösendem Push-Button bestimmen
Hallo,
habe ein Problem mit der Positionsbestimmung eines Pushbuttons per Makro bei dem mir hoffentlich jemand helfen kann.
Mein Pushbutton soll Makro A ausführen.
Makro A soll die Position des auslösenden Pushbuttons als Koordinatenwert der Zelle ausgeben, auf der er "liegt" (also als (X,Y) Wert).
Makro A soll dann den Inhalt der Zelle die 2 Spalten neben dem Pushbutton liegt (X-2,Y) in eine andere Zelle (A,B) schreiben.
Direktes Problem - wie lese Ich den (X,Y)-Wert der Button-Zelle aus?
Wie kann ich die Spalten-Koordinaten als Variable speichern, um aus X das X-2 zu machen?
Um den Wert aus der Zelle (X-2,Y) zu holen, kann ich ganz einfach "getCellrangebyPosition(X-2,Y)" bzw. "getCellrangebyPosition(X,Y)"schreiben?
Danke für eure Tipps.
Grüße,
batgilla.
EDIT:
Gibt es vielleicht eine andere Möglichkeit ohne Makros? Zum Beispiel eine Verkettung von Calc-Funktionen die per Button ausgelöst werden können?
Beispiel:
C20 ist Zielzelle
D20 ist Wertzelle
E20 ist Button
Wenn man den Button drückt, ist C20=C20+D20. Könnte man das nur mit Calcfunktionien lösen?
habe ein Problem mit der Positionsbestimmung eines Pushbuttons per Makro bei dem mir hoffentlich jemand helfen kann.
Mein Pushbutton soll Makro A ausführen.
Makro A soll die Position des auslösenden Pushbuttons als Koordinatenwert der Zelle ausgeben, auf der er "liegt" (also als (X,Y) Wert).
Makro A soll dann den Inhalt der Zelle die 2 Spalten neben dem Pushbutton liegt (X-2,Y) in eine andere Zelle (A,B) schreiben.
Direktes Problem - wie lese Ich den (X,Y)-Wert der Button-Zelle aus?
Wie kann ich die Spalten-Koordinaten als Variable speichern, um aus X das X-2 zu machen?
Um den Wert aus der Zelle (X-2,Y) zu holen, kann ich ganz einfach "getCellrangebyPosition(X-2,Y)" bzw. "getCellrangebyPosition(X,Y)"schreiben?
Danke für eure Tipps.
Grüße,
batgilla.
EDIT:
Gibt es vielleicht eine andere Möglichkeit ohne Makros? Zum Beispiel eine Verkettung von Calc-Funktionen die per Button ausgelöst werden können?
Beispiel:
C20 ist Zielzelle
D20 ist Wertzelle
E20 ist Button
Wenn man den Button drückt, ist C20=C20+D20. Könnte man das nur mit Calcfunktionien lösen?
Re: Makro: Position von auslösendem Push-Button bestimmen
Hallo Batgilla!
Calc-Functionen, werden immer, wenn sich ein Wert Verändert hat neu berechnet. Wenn du eine Bedingte Neuberechnung haben willst, musst du irgendwo ein Kennzeichen setzen oder löschen, das du mit einer Wennbedingung abfragen kannst.
Auch das Herausfinden, welcher Button gedrückt wurde, geht meines Wissens nicht, da die Daten nicht mitgegeben werden. Hier würde nur helfen, wenn du jedem Button ein eigenes Makro zuordnest, in dem die Position festabgespeichert ist. Mit diesem Einzelmakro könntest du dann natürlich das Hauptmakro aufrufen und dabei die gewünschten Daten mitgeben.
Ein Möglichkeit ist auch noch, wenn vor dem Drücken des Buttons eine Zelle in der gewünschten Zeile ausgewählt ist, denn dadurch kann das Makro den zu bearbeitenden Ort ermitteln.
Eine Möglichkeit ist auch noch "Selection Change Listener". Da könnte man statt einen Button eine Zelle anklicken. Das Makro kann dann ermitteln, in welcher Zeile die angeklickte Zelle ist.
Beispiel für den Listener
viewtopic.php?f=18&t=24295&p=103933&hil ... er#p103933
Gruß
Charly
Ich wüsste nicht wie.Batgilla hat geschrieben: Gibt es vielleicht eine andere Möglichkeit ohne Makros? Zum Beispiel eine Verkettung von Calc-Funktionen die per Button ausgelöst werden können?
Calc-Functionen, werden immer, wenn sich ein Wert Verändert hat neu berechnet. Wenn du eine Bedingte Neuberechnung haben willst, musst du irgendwo ein Kennzeichen setzen oder löschen, das du mit einer Wennbedingung abfragen kannst.
Auch das Herausfinden, welcher Button gedrückt wurde, geht meines Wissens nicht, da die Daten nicht mitgegeben werden. Hier würde nur helfen, wenn du jedem Button ein eigenes Makro zuordnest, in dem die Position festabgespeichert ist. Mit diesem Einzelmakro könntest du dann natürlich das Hauptmakro aufrufen und dabei die gewünschten Daten mitgeben.
Ein Möglichkeit ist auch noch, wenn vor dem Drücken des Buttons eine Zelle in der gewünschten Zeile ausgewählt ist, denn dadurch kann das Makro den zu bearbeitenden Ort ermitteln.
Eine Möglichkeit ist auch noch "Selection Change Listener". Da könnte man statt einen Button eine Zelle anklicken. Das Makro kann dann ermitteln, in welcher Zeile die angeklickte Zelle ist.
Beispiel für den Listener
viewtopic.php?f=18&t=24295&p=103933&hil ... er#p103933
Gruß
Charly
Re: Makro: Position von auslösendem Push-Button bestimmen
Danke erstmalEin Möglichkeit ist auch noch, wenn vor dem Drücken des Buttons eine Zelle in der gewünschten Zeile ausgewählt ist, denn dadurch kann das Makro den zu bearbeitenden Ort ermitteln.



EDIT:
Hab es mir überlegt - werde doch deinen Vorschlag umsetzen ^^.
Re: Makro: Position von auslösendem Push-Button bestimmen
Hallo!
Die nötigen Spalten stehen doch nach deinen Angaben fest. In deinem Beispiel war es C, D, E. Mehr brauchst du nicht, um die Zellen zu finden.
Sollten es doch unterschiedliche Spalten sein, dann darf natürlich nur eine bestimmte Zelle aktiviert werden. Da kann man auch die Spalte auslesen. Oder es andere Kriterien aus der man die Spalte ermitteln kann. z.B. "letzte gefüllte Spalte".
Gruß
Charly
Das verstehe ich jetzt nicht. Bei dem Vorschlag brauchst du doch keine Einzelmakros. Durch die markierte Zelle kannst du die aktuelle Zeile auslesen.Ein Möglichkeit ist auch noch, wenn vor dem Drücken des Buttons eine Zelle in der gewünschten Zeile ausgewählt ist, denn dadurch kann das Makro den zu bearbeitenden Ort ermitteln.
Läuft wahrscheinlich darauf hinaus, dass Ich statt 2 generalisierter Makros... 160 Makros mache. Für jede Zelle einen.
Code: Alles auswählen
Zeile = ThisComponent.CurrentSelection.getCellAddress().row
Sollten es doch unterschiedliche Spalten sein, dann darf natürlich nur eine bestimmte Zelle aktiviert werden. Da kann man auch die Spalte auslesen. Oder es andere Kriterien aus der man die Spalte ermitteln kann. z.B. "letzte gefüllte Spalte".
Gruß
Charly
Zuletzt geändert von Charly am Mi, 06.05.2009 15:51, insgesamt 1-mal geändert.
Re: Makro: Position von auslösendem Push-Button bestimmen
Charly hat geschrieben:Hallo!
Die nötigen Spalten stehen doch nach deinen Angaben fest. In deinem Beispiel war es C, D, E. Mehr brauchst du nicht, um die Zellen zu finden.
Äh... ja... wollte zuerst nicht deine Methode ausprobieren(sondern die Methode mit den Einzelmakros ^^). Hatte mich dann aber mit dem "Edit" umentschieden - ist mir vom Arbeitsaufwand lieber. Danke

Re: Makro: Position von auslösendem Push-Button bestimmen
Kriege es damit leider auch nicht hin :>.
Um die Problemlösung leichter zu machen - ich möchte eine Zelle markieren ("auswahlzelle"), dann möchte ich den Inhalt von dieser Zelle ("auswahlzelleinhalt") mit dem Inhalt einer bestimmten Zelle ("festezelleinhalt") addieren und in dieser Zelle speichern ("festezelle" mit den Koordinaten "C20").
Bereits bei "auswahlzelle = oDocument.getCurrentSelection()" sagt er, dass "Eigenschaft oder Methode nicht gefunden wird"
.
Um die Problemlösung leichter zu machen - ich möchte eine Zelle markieren ("auswahlzelle"), dann möchte ich den Inhalt von dieser Zelle ("auswahlzelleinhalt") mit dem Inhalt einer bestimmten Zelle ("festezelleinhalt") addieren und in dieser Zelle speichern ("festezelle" mit den Koordinaten "C20").
Code: Alles auswählen
Sub Test
Dim oDocument,auswahlzelle,auswahlzelleinhalt,festezelle,festezelleinhalt,inhalt
oDocument=thisComponent.Sheets.getbyName("test")
auswahlzelle = oDocument.getCurrentSelection()
auswahlzelleinhalt=auswahlzelle.value
festezelle=oDocument.getCellRangeByName("C20")
festezelleinhalt=festezelle.value
festezelleinhalt=festezelleinhalt+auswahlzelleinhalt
oDocument.getCellRangeByName("C20")=festezelleninhalt
End Sub

Re: Makro: Position von auslösendem Push-Button bestimmen
Hallo
Nimm mal:
.getCurrentSelection() gibts nur fürs ganze Dokument und nicht für ein einzelnes Tabellenblatt
Gruß Karo
Nimm mal:
Code: Alles auswählen
Sub Test
Dim oDoc,oSheet,auswahlzelle,auswahlzelleinhalt,festezelle,festezelleinhalt,inhalt
oDoc = thisComponent
osheet = oDoc.Sheets().getbyName("test")
auswahlzelle = oDoc.getCurrentSelection()
auswahlzelleinhalt=auswahlzelle.value
festezelle = oSheet.getCellRangeByName("C20")
festezelleinhalt = festezelle.value
festezelleinhalt = festezelleinhalt+auswahlzelleinhalt
festezelle.value = festezelleinhalt
End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Makro: Position von auslösendem Push-Button bestimmen
Danke - hat geklappt
.
