Calc: nach Auswahl, Werte in Zellen füllen
Moderator: Moderatoren
Calc: nach Auswahl, Werte in Zellen füllen
Liebes Forum,
habe eine Liste mit verschiedenen Werten. Im oberen Bereich der Arbeitsmappe habe ich Felder (Zellen) unterschiedlich angeordnet, Nun möchte ich, dass die Werte aus der markierten Zeile (durch Klick auf eine Schaltfläche) in den oberen Zellen gefüllt werden.
Habt Ihr dazu eventuell eine Lösung?
Danke schon Mal im Voraus.
lg, Dieter
habe eine Liste mit verschiedenen Werten. Im oberen Bereich der Arbeitsmappe habe ich Felder (Zellen) unterschiedlich angeordnet, Nun möchte ich, dass die Werte aus der markierten Zeile (durch Klick auf eine Schaltfläche) in den oberen Zellen gefüllt werden.
Habt Ihr dazu eventuell eine Lösung?
Danke schon Mal im Voraus.
lg, Dieter
Intel(R) Dual Core(TM)2, 2.5 GHz, 2 GB RAM
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Re: Calc: nach Auswahl, Werte in Zellen füllen
Hallo
Gruß Karo
Ja evtl. haben wir da eine Lösung, falls du uns evtl. eine Bsplsdatei und eine präzisere Erklärung lieferst.Habt Ihr dazu eventuell eine Lösung?
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: Calc: nach Auswahl, Werte in Zellen füllen
Hallo Karo,
gerne stelle ich Dir eine Musterdatei zur Verfügung.
Ich möchte nun z.B. auf die Zelle B22 oder B23 oder B24 klicken und dann sollen alle Werte aus dieser Zeile in die oberen grün markierten Zellen übertragen werden. Irgendwie müsste man die Zeilennummer herausfinden (Index) und dann die Zellen durchgehen.
Danke schön im Voraus.
Gruß, Dieter
gerne stelle ich Dir eine Musterdatei zur Verfügung.
Ich möchte nun z.B. auf die Zelle B22 oder B23 oder B24 klicken und dann sollen alle Werte aus dieser Zeile in die oberen grün markierten Zellen übertragen werden. Irgendwie müsste man die Zeilennummer herausfinden (Index) und dann die Zellen durchgehen.
Danke schön im Voraus.
Gruß, Dieter
- Dateianhänge
-
- test.ods
- (11.21 KiB) 168-mal heruntergeladen
Intel(R) Dual Core(TM)2, 2.5 GHz, 2 GB RAM
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Re: Calc: nach Auswahl, Werte in Zellen füllen
Hallo
Ich häng mal das Beispielsdokument mit Makro und konfigurierter Schaltfläche an. ( das Makro ist dem Ereignis 'Fokuserhalt ..' der Schaltfläche zugewiesen ) Du solltest dir dazu http://www.ooowiki.de/MakrosInstallieren und http://www.ooowiki.de/MakrosMitEinemKlick
anschauen.
Der Makrocode:
Gruß Karo
Ich häng mal das Beispielsdokument mit Makro und konfigurierter Schaltfläche an. ( das Makro ist dem Ereignis 'Fokuserhalt ..' der Schaltfläche zugewiesen ) Du solltest dir dazu http://www.ooowiki.de/MakrosInstallieren und http://www.ooowiki.de/MakrosMitEinemKlick
anschauen.
Der Makrocode:
Code: Alles auswählen
Sub sel_zeile_to_Formular
with thisComponent.currentselection.celladdress
isheet = .sheet
irow = .row
end with
with thiscomponent.sheets( isheet )
.getcellrangebyname("B3").string = .getcellbyposition(1,irow).string
.getcellrangebyname("B4").string = .getcellbyposition(2,irow).string
.getcellrangebyname("B5").string =_
.getcellbyposition(3,irow).string & " " & .getcellbyposition(4,irow).string
.getcellrangebyname("B6").string = .getcellbyposition(5,irow).string
.getcellrangebyname("B8").string = .getcellbyposition(6,irow).string
.getcellrangebyname("B9").formulalocal = .getcellbyposition(7,irow).string
.getcellrangebyname("B10").string = .getcellbyposition(8,irow).string
.getcellrangebyname("B11").formulalocal = .getcellbyposition(9,irow).string
end with
End Sub
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)
-
- **
- Beiträge: 34
- Registriert: Fr, 06.11.2009 05:49
Re: Calc: nach Auswahl, Werte in Zellen füllen
Hallo backin.
Du brauchst dazu einen Listener, der auf eine Änderung der Zell-Auswahl reagiert. Die Prozedur AddListener() legt diesen Listener an. Du kannst sie zum Testen manuell ausführen und später automatisch beim Öffnen des Dokuments ausführen lassen. (Menü Extras | Anpassen -> Ereignisse -> "Dokument öffnen" -> Marko).
Der Listener ruft dann bei jeder neuen Auswahl die Prozedur CurCtrl_selectionChanged(oEvent) auf. Dort wird geprüft, ob ...
- die neue Auswahl eine einzelne Zelle ist
- in Spalte B liegt
- unterhalb von Zeile 22 liegt.
Trifft das alles zu, werden die Daten aus der Zeile kopiert.
Peter
Du brauchst dazu einen Listener, der auf eine Änderung der Zell-Auswahl reagiert. Die Prozedur AddListener() legt diesen Listener an. Du kannst sie zum Testen manuell ausführen und später automatisch beim Öffnen des Dokuments ausführen lassen. (Menü Extras | Anpassen -> Ereignisse -> "Dokument öffnen" -> Marko).
Der Listener ruft dann bei jeder neuen Auswahl die Prozedur CurCtrl_selectionChanged(oEvent) auf. Dort wird geprüft, ob ...
- die neue Auswahl eine einzelne Zelle ist
- in Spalte B liegt
- unterhalb von Zeile 22 liegt.
Trifft das alles zu, werden die Daten aus der Zeile kopiert.
Peter
Code: Alles auswählen
Global oListener
Sub AddListener()
oListener = CreateUnoListener("CurCtrl_", "com.sun.star.view.XSelectionChangeListener")
ThisComponent.CurrentController.addSelectionChangeListener (oListener)
End Sub
Sub RemoveListener()
On Error Resume Next
ThisComponent.CurrentController.removeSelectionChangeListener (oListener)
End Sub
Sub CurCtrl_selectionChanged(oEvent)
Dim oCell As Object
Dim lRow As Long
oCell = oEvent.Source.Selection
If oCell.ImplementationName <> "ScCellObj" Then Exit Sub
lRow = oCell.RangeAddress.StartRow
If oCell.RangeAddress.StartColumn = 1 And lRow >= 21 Then 'Spalte B, ab Zeile 22
With oCell.spreadsheet
.getCellRangeByName("B3").String = .getCellByPosition(1, lRow).String
.getCellRangeByName("B4").String = .getCellByPosition(2, lRow).String
.getCellRangeByName("B5").String = .getCellByPosition(3, lRow).String & " " & .getCellByPosition(4, lRow).String
.getCellRangeByName("B6").String = .getCellByPosition(5, lRow).String
.getCellRangeByName("B8").String = .getCellByPosition(6, lRow).String
.getCellRangeByName("B9").FormulaLocal = .getCellByPosition(7, lRow).String
.getCellRangeByName("B10").String = .getCellByPosition(8, lRow).String
.getCellRangeByName("B11").FormulaLocal = .getCellByPosition(9, lRow).String
End With
End If
End Sub
Re: Calc: nach Auswahl, Werte in Zellen füllen
Hallo Karo, hallo Peter,
herzlichen Dank für die Lösungen. Habe beide ausprobiert und es funktionieren beide einwandfrei.
Eine Anforderung habe ich noch, was ich bisher über komplizierte Formeln löse (leidet sehr unter Perfomance): in einer zweiten Arbeitsmappe habe ich drei Spalten (nicht zusammenhängend) die ich mit einem Wert (manuelle Eingabe) aus der ersten Arbeitsmappe durchsuchen möchte. Sobald der Wert innerhalb einer Spalte (zeilenweise suchen) gefunden wurde ("meyer" in "Ostermeyer") soll die gesamte Zeile in die erste Arbeitsmappe kopiert werden. Anschliessend soll weiter gesucht werden. Die Treffer sollen dann untereinander aufgelistet werden.
Ihr könnt Euch eine ungefähre Lösung unter viewtopic.php?f=2&t=30024 ansehen.
Danke schön im Voraus.
Schöne Grüße, Dieter
herzlichen Dank für die Lösungen. Habe beide ausprobiert und es funktionieren beide einwandfrei.
Eine Anforderung habe ich noch, was ich bisher über komplizierte Formeln löse (leidet sehr unter Perfomance): in einer zweiten Arbeitsmappe habe ich drei Spalten (nicht zusammenhängend) die ich mit einem Wert (manuelle Eingabe) aus der ersten Arbeitsmappe durchsuchen möchte. Sobald der Wert innerhalb einer Spalte (zeilenweise suchen) gefunden wurde ("meyer" in "Ostermeyer") soll die gesamte Zeile in die erste Arbeitsmappe kopiert werden. Anschliessend soll weiter gesucht werden. Die Treffer sollen dann untereinander aufgelistet werden.
Ihr könnt Euch eine ungefähre Lösung unter viewtopic.php?f=2&t=30024 ansehen.
Danke schön im Voraus.
Schöne Grüße, Dieter
Intel(R) Dual Core(TM)2, 2.5 GHz, 2 GB RAM
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Re: Calc: nach Auswahl, Werte in Zellen füllen
Aloha
Etwas Ähnliches habe ich vor einiger Zeit mal zusammengebastelt, schau mal, ob Du das auf Deine Bedürfnisse anpassen kannst.
(in Quelle.ods sind ein paar zufällige Daten, die mir gerade unter die Finger gekommen sind, in Ziel.ods die Makros mit der Suchfunktion)
Etwas Ähnliches habe ich vor einiger Zeit mal zusammengebastelt, schau mal, ob Du das auf Deine Bedürfnisse anpassen kannst.
(in Quelle.ods sind ein paar zufällige Daten, die mir gerade unter die Finger gekommen sind, in Ziel.ods die Makros mit der Suchfunktion)
Re: Calc: nach Auswahl, Werte in Zellen füllen
Hallo DPunch,
habe mir Deine Lösung angeschaut. In Deinem Beispiel wird nach dem eingegebenen Suchwert in einer Spalte gesucht. Ich möchte in drei Spalten (z.B. A, E, H) nach einem Wert suchen (Teilstring).
Folgendes Beispiel:
Suchwert: ball
Nun soll in Spalte A *ball* gesucht werden. Wenn nicht vorhanden, soll in Spalte E *ball* gesucht werden. Wenn nicht vorhanden, soll in Spalte H *ball* gesucht werden. Und dann weiter mit der nächsten Zeile. Die Treffer sollen dann zusammen mit den restlichen in der Zeile vorhandenen Daten in eine andere Arbeitsmappe untereinander kopiert werden.
Herzlichen Dank im Voraus.
vG, Dieter
habe mir Deine Lösung angeschaut. In Deinem Beispiel wird nach dem eingegebenen Suchwert in einer Spalte gesucht. Ich möchte in drei Spalten (z.B. A, E, H) nach einem Wert suchen (Teilstring).
Folgendes Beispiel:
Suchwert: ball
Nun soll in Spalte A *ball* gesucht werden. Wenn nicht vorhanden, soll in Spalte E *ball* gesucht werden. Wenn nicht vorhanden, soll in Spalte H *ball* gesucht werden. Und dann weiter mit der nächsten Zeile. Die Treffer sollen dann zusammen mit den restlichen in der Zeile vorhandenen Daten in eine andere Arbeitsmappe untereinander kopiert werden.
Herzlichen Dank im Voraus.
vG, Dieter
Intel(R) Dual Core(TM)2, 2.5 GHz, 2 GB RAM
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Re: Calc: nach Auswahl, Werte in Zellen füllen
Sei mir nicht böse, aber ein ganz kleines bisschen Eigeninitiative wäre wohl nicht verkehrt.
Das Beispiel gibt Dir alles in die Hand, was Du benötigst.
Wenn Du Dir die Lösung angeschaut hast, siehst Du ja auch, welches Ergebnis es hat, wenn in der Spalte nichts gefunden wurde - in dem Fall kannst Du in einer anderen Spalte suchen.
Helfen tu' ich gerne, aber jemandem das komplette Makro zu schreiben, das geht mir doch zu weit.
Das Beispiel gibt Dir alles in die Hand, was Du benötigst.
Wenn Du Dir die Lösung angeschaut hast, siehst Du ja auch, welches Ergebnis es hat, wenn in der Spalte nichts gefunden wurde - in dem Fall kannst Du in einer anderen Spalte suchen.
Helfen tu' ich gerne, aber jemandem das komplette Makro zu schreiben, das geht mir doch zu weit.
Re: Calc: nach Auswahl, Werte in Zellen füllen
Möchte auch nicht, dass Du mir das Makro schreibst. Das Suchen über Spalten ist mir klar. Ich möchte aber eher in einer Zeile drei Spalten durchgehen und dann zur nächsten Zeile wechseln und da weitersuchen. Da fehlt mir die Idee bzw. das Wissen, wie ich es angehen soll.
Intel(R) Dual Core(TM)2, 2.5 GHz, 2 GB RAM
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Re: Calc: nach Auswahl, Werte in Zellen füllen
Habe das Makro von DPunch an meine Anforderungen umgebaut. Funktioniert einwandfrei. Vielen Dank DPunch für Deine Hilfe.
Einen Punkt habe ich noch: wenn ich im Suchfeld das Suchwort eingebe und danach auf den Button "Suchen" klicke, sucht er nach einem Leerstring, da das Suchfeld nicht mit Return abgeschlossen wurde. Kann man über einen Befehl bewirken, dass wenn man auf den Button "Suchen" klicke, vor dem Suchen ein Return auf das Suchfeld gesetzt wird?
Danke im Voraus.
Einen Punkt habe ich noch: wenn ich im Suchfeld das Suchwort eingebe und danach auf den Button "Suchen" klicke, sucht er nach einem Leerstring, da das Suchfeld nicht mit Return abgeschlossen wurde. Kann man über einen Befehl bewirken, dass wenn man auf den Button "Suchen" klicke, vor dem Suchen ein Return auf das Suchfeld gesetzt wird?
Danke im Voraus.
Intel(R) Dual Core(TM)2, 2.5 GHz, 2 GB RAM
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Windows Vista Ultimate 32Bit
Microsoft Office 2003/2007, OpenOffice.org 3.1, SQLServer 2005/2008, Oracle, MySQL 5.1
Re: Calc: nach Auswahl, Werte in Zellen füllen
Aloha
Du musst halt irgendwas machen, was Dich aus dem Editier-Modus der Zelle rausbringt, bevor Du den Text darin auslesen willst.
Dafür könntest Du zum Beispiel kurz eine andere Zelle selektieren und dann zurück springen
Das geht aber auch mit einem einfachen "Neu berechnen"
Gibt mit Sicherheit noch ein paar andere Möglichkeiten, das sind gerade die ersten, die mir so einfallen 
Du musst halt irgendwas machen, was Dich aus dem Editier-Modus der Zelle rausbringt, bevor Du den Text darin auslesen willst.
Dafür könntest Du zum Beispiel kurz eine andere Zelle selektieren und dann zurück springen
Code: Alles auswählen
CurSelection = oDoc.CurrentController.getSelection
oTempCell = oSheet.getCellByPosition(1,1)
oDoc.CurrentController.Select(oTempCell)
oDoc.CurrentController.Select(CurSelection)
Code: Alles auswählen
oDoc.calculate
