Calc: nach Auswahl, Werte in Zellen füllen

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: Calc: nach Auswahl, Werte in Zellen füllen

Re: Calc: nach Auswahl, Werte in Zellen füllen

von DPunch » Di, 09.03.2010 12:11

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

Code: Alles auswählen

CurSelection = oDoc.CurrentController.getSelection
oTempCell = oSheet.getCellByPosition(1,1)
oDoc.CurrentController.Select(oTempCell)
oDoc.CurrentController.Select(CurSelection)
Das geht aber auch mit einem einfachen "Neu berechnen"

Code: Alles auswählen

oDoc.calculate
Gibt mit Sicherheit noch ein paar andere Möglichkeiten, das sind gerade die ersten, die mir so einfallen ;)

Re: Calc: nach Auswahl, Werte in Zellen füllen

von backin » Di, 09.03.2010 09:04

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.

Re: Calc: nach Auswahl, Werte in Zellen füllen

von backin » Mi, 24.02.2010 11:27

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.

Re: Calc: nach Auswahl, Werte in Zellen füllen

von DPunch » Mi, 24.02.2010 00:38

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.

Re: Calc: nach Auswahl, Werte in Zellen füllen

von backin » Di, 23.02.2010 20:30

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

Re: Calc: nach Auswahl, Werte in Zellen füllen

von DPunch » Di, 23.02.2010 18:21

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)

Re: Calc: nach Auswahl, Werte in Zellen füllen

von backin » Di, 23.02.2010 16:08

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

Re: Calc: nach Auswahl, Werte in Zellen füllen

von peterschleif » Di, 23.02.2010 10:55

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

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

von Karolus » Di, 23.02.2010 10:23

Hallo
Ich häng mal das Beispielsdokument mit Makro und konfigurierter Schaltfläche an. ( das Makro ist dem Ereignis 'Fokuserhalt ..' der Schaltfläche zugewiesen )
sel_Datensatz_to_Formular.ods
(11.94 KiB) 177-mal heruntergeladen
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
Gruß Karo

Re: Calc: nach Auswahl, Werte in Zellen füllen

von backin » Di, 23.02.2010 08:46

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
Dateianhänge
test.ods
(11.21 KiB) 168-mal heruntergeladen

Re: Calc: nach Auswahl, Werte in Zellen füllen

von Karolus » Mo, 22.02.2010 15:54

Hallo
Habt Ihr dazu eventuell eine Lösung?
Ja evtl. haben wir da eine Lösung, falls du uns evtl. eine Bsplsdatei und eine präzisere Erklärung lieferst.

Gruß Karo

Calc: nach Auswahl, Werte in Zellen füllen

von backin » Mo, 22.02.2010 15:47

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

Nach oben