Seite 1 von 1
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Mo, 28.04.2008 17:57
von komma4
Willkommen im Forum.
Das geht auch in Calc mit einem
Listener.
Sieh Dir mal mein Beispiel
onColumnChange an.
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Mo, 28.04.2008 22:10
von komma4
Achim,
das ist eine *.odt-Datei mit der Dokumentation und den angehängten Makros...
Also: rechtsklick im Browser, speichern, mit OOo öffnen.
Konnte sie gerade erfolgreich laden...
Klappt das, oder brauchst Du eine PM mit attachment?
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Di, 29.04.2008 14:45
von komma4
Habe keine Probleme mit 2.4 die Datei zu öffnen (direkt, oder von HD).
Schicke mir eine eMail-Adresse per PM, dann kommt sie als attachment.
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Di, 29.04.2008 22:19
von komma4
Nein.
Nehme eine der Schaltflächen "PM" oder "eMail" unter dem Profil neben einem Posting von mir.
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Fr, 29.01.2016 16:39
von skl
Hallo,
das ist genau das, was ich brauche! Ich habe eine Tabelle, in der ich in verschiedenen Zellen Nachnamen eintrage. Auf einem zweiten Tabellenblatt berechne (gewichtet nach Position auf Blatt 1), wie oft der Nachname bereits in der Tabelle steht. Diese Information hätte ich gerne bei der Eingabe auf dem ersten Blatt.
Meine Idee:
Ich schreibe in eine freie Zelle den Inhalt (Nachname) der aktiven Zelle und hole mir den Zahlenwert vom 2. Blatt. Aber wie bekomme ich den Inhalt der Aktiven Zelle dynamisch in eine andere geschrieben???
Vielen Dank
Stefan
PS: Der in diesem Thread angegebene Link ist leider TOT!
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Fr, 29.01.2016 17:04
von komma4
onColumnChange hat geschrieben:Dieses Code-Beispiel beobachtet auf Eingaben (in der Spalte A auf einem Tabellenblatt "Tabelle1") und setzt daraufhin einen Zeitstempel in die korrespondierende Zeile der Spalte B.
Zur Installation: lege den Code (im angehängten Modul) in ein Modul des Dokument, wo es wirken soll, oder in die STANDARD-Bibliothek von "Meine Makros"
Anmerkung: die verwendeten Variablen im Code sind GLOBAL definiert, was bedeutet, dass sie während der gesamten OOo-Sitzung Gültigkeit haben (ihre "Lebensdauer" haben); die Verwendung von gleichnamigen Variablen in anderen Makros verbietet sich deshalb!
Aktivieren des Codes bspw. durch Zuweisen des Makros SetListeners zum Dokument-Öffnen-Ereignis (Anpassen>Ereignisse)
Deaktivieren des Listeners daselbst beim Dokument>Schliessen-Ereignis mittels des Makros RemoveListener
Dieses Wegnehmen des Listeners ist unbedingt notwendig, um die Stabilität von OOo nicht zu beeinflussen
Code: Alles auswählen
REM ***** BASIC *****
'Copyright (c) 2008 Winfried Rohr, re-Solutions Software Test Engineering
'This program is free software; you can redistribute it and/or modify it under
'the terms of the GNU General Public License as published by the Free Software
'Foundation; either version 2 of the License, or (at your option) any later
'version.
'This program is distributed in the hope that it will be useful, but WITHOUT
'ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
'FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
'You should have received a copy of the GNU General Public License along with
'this program; if not, write to the Free Software Foundation, Inc., 59 Temple
'Place, Suite 330, Boston, MA 02111-1307 USA
' ========================================================================
' http://www.oooforum.org/forum/viewtopic.phtml?t=27026
' ms777 Posted: Sat Nov 19, 2005 3:30 pm
' angepasst 2007-10-17
' http://de.openoffice.info/viewtopic.php?f=2&t=14347
global lastCol as long
global lastRow as Long
global actCol as long
global actRow as Long
Global oRange
Global oContr
Global oDatChangeListener
Global oSelChangeListener
Sub RemoveListener
oRange.removeChartDataChangeEventListener(oDatChangeListener)
oContr.removeSelectionChangeListener(oSelChangeListener)
End Sub
Sub SetListeners()
oSelChangeListener = createUnoListener("O1_","com.sun.star.view.XSelectionChangeListener")
oDatChangeListener = createUnoListener("O2_","com.sun.star.chart.XChartDataChangeEventListener")
' Tabellen-Index
' oSheet = ThisComponent.sheets.getByIndex(0)
oSheet = ThisComponent.Sheets.getByName( "Tabelle1" )
oContr = ThisComponent.CurrentController
' zu beobachtender Bereich
' Angabe der Zellen
' Null-basiert: A1=0,0 B1=1,0 C4=3,3
' Links, Oben, Rechts, Unten
' hier: gesamte Spalte A, OOo Version 2
oRange = oSheet.getCellRangeByPosition(0,0,0,65535)
lastRow = 0
lastCol = 0
oContr.addSelectionChangeListener(oSelChangeListener)
oRange.addChartDataChangeEventListener(oDatChangeListener)
' ausgelagert !
' oRange.removeChartDataChangeEventListener(oDatChangeListener)
' oContr.removeSelectionChangeListener(oSelChangeListener)
End Sub
Sub O1_selectionChanged(aEvent as com.sun.star.lang.EventObject)
'xray.xray aEvent
oSel = aEvent.Source.Selection
if HasUnoInterfaces(oSel, "com.sun.star.sheet.XCellAddressable") then
oCA = oSel.CellAddress
actCol = lastCol
actRow = lastRow
lastCol = oCA.Column
lastRow = oCA.Row
endif
end sub
Sub O2_chartDataChanged(a as com.sun.star.chart.ChartDataChangeEvent)
' Spaltenangabe: B
oDateCell=ThisComponent.CurrentController.ActiveSheet.getCellByPosition(1, actRow)
oDateCell.SetString(Now)
End Sub
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Sa, 30.01.2016 18:29
von skl
Danke, mit Eurer Hilfe habe ich jetzt ein Makro zusammen geschustert, das halbwegs macht, was es soll:
Option Explicit
DIM meinText As String
DIM meineCalcDatei
DIM meineTabelle
DIM meineZelleJ3
Sub Soll_Ist()
meinText = ThisComponent.getCurrentSelection().String
meineCalcDatei = thisComponent
meineTabelle = meineCalcDatei.Sheets.getbyname("Aufsichten")
meineZelleJ3 = meineTabelle.getcellrangebyname("J3")
'in J3 schreiben
meineZelleJ3.String = meinText
End Sub
Allerdings muss ich das Makro immer von Hand starten. Weiß jemand, wie die Zelle J3 automatisch aktualisiert wird, wenn ich eine neue Zelle auswähle?
Viele Grüße
Stefan
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Sa, 30.01.2016 21:20
von Stephan
Weiß jemand, wie die Zelle J3 automatisch aktualisiert wird, wenn ich eine neue Zelle auswähle?
Indem Du das Makro dem entsprechenden Ereignis zuweist:
-Klick auf den Tabellenreiter mit rechter Maustaste um Kontextmenü zu erzeugen
-"Tabellenereignisse...." wählen
-im erscheinenden Dialog das Makro dem Ereignis "Auswahl geändert" zuweisen
Gruß
Stephan
Re: Zelle A1 immer der Inhalt der gerade markierten (aktiven) Ze
Verfasst: Sa, 30.01.2016 21:23
von skl
Super, vielen Dank!!
Stefan