Seite 1 von 1

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 10:39
von Karolus
Hallo
Ja das sollte gehen, Jürgen alias Turtle hat hier ein Beispiel entworfen.
Gruß Karo

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 11:25
von turtle47
Hallo Gast,

sowas findest Du hier.

Viel Erfolg.

Jürgen

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 11:26
von Karolus
Hallo
Wenn du deine Aufgabenstellung mal detaillierter beschreibst, nebst Makrocode des zu startenden Makro, wird dir hier sicher geholfen das zusammenzubauen.

Gruß Karo

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 14:43
von rob
So hab mich nun mal angemeldet.

könnte mir jemand helfen beim einbinden von Jürgen´s Makro???

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 15:58
von turtle47
Hi Rob,
Gast hat geschrieben:betritt das nächste feld (bei mir) B6
wie stellst Du denn sicher, dass der Nutzer diese Zelle auswählt und nicht eine Andere?
Und was ist wenn der Nutzer ohne etwas eingegeben zu haben in diese Zelle klickt?

Wäre es nicht sinnvoller dem Nutzer einen Dialog anzubieten der ausgefüllt wird und dann
die Daten in das Tabellenblatt überträgt?

Jürgen

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 16:24
von rob
grüß dich
turtle47 hat geschrieben:
wie stellst Du denn sicher, dass der Nutzer diese Zelle auswählt und nicht eine Andere?
Und was ist wenn der Nutzer ohne etwas eingegeben zu haben in diese Zelle klickt?
[[uote]

da würde ich auf die intuitive Bedienung setzen ^^ hatte das als mir umsetzbare Möglichkeit gedacht

[q[ote="turtle47"]
Wäre es nicht sinnvoller dem Nutzer einen Dialog anzubieten der ausgefüllt wird und dann
die Daten in das Tabellenblatt überträgt? [/qu[te]
[/quote]

bei einem Dialog würde ich Neueintragungen nicht so wirklich Optimieren. Das Laden der Daten soll nur ein Feature sein, da manche ja nur ihre alten Daten aktualisieren brauchen. Zudem hätte ich gleich eine Zeile augegeben, in der ich die zugehörigen alten Aaten löschen könnte.

hab in der Uni mal vba gehabt, da gibt es eine Option, das ein Makro aktiviert wird, wenn man mit dem Cursor die Zelle betritt oder verlässt (konnte man wie beim Button einstellen)

greetz


ps: beim Ändern haut was nicht wirklich hin, kann Quote löschen wie ich mag, haut er immer wieder rein

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 16:43
von Stephan
hab in der Uni mal vba gehabt, da gibt es eine Option, das ein Makro aktiviert wird, wenn man mit dem Cursor die Zelle betritt oder verlässt (konnte man wie beim Button einstellen
und dafür, wie man das Gleiche mit OOo macht (nämlich mit einem Listener, sind Dir hier im Thread bereits 2 beispiele angeboten worden...


Gruß
Stephan

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 16:44
von turtle47
Hi,
rob hat geschrieben:da gibt es eine Option, das ein Makro aktiviert wird, wenn man mit dem Cursor die Zelle betritt oder verlässt (konnte man wie beim Button einstellen)
Der Cursor wird doch erst sichtbar, wenn man einen Doppelklick in die Zelle macht.

Klickt der User in die Zelle oder wird das mit der Tabtaste gemacht?
Steht da vielleicht ein Text in der Zelle?

Dafür müsste man mit einem "Listener" arbeiten.
rob hat geschrieben:da würde ich auf die intuitive Bedienung setzen ^^ hatte das als mir umsetzbare Möglichkeit gedacht
Warum machst Du das nicht direkt mit einem Button? Den finde ich intuitiver als in eine Zelle klicken. Oder?

Jürgen

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 17:06
von rob
grüß dich
turtle47 hat geschrieben:
Der Cursor wird doch erst sichtbar, wenn man einen Doppelklick in die Zelle macht.

Klickt der User in die Zelle oder wird das mit der Tabtaste gemacht?
Steht da vielleicht ein Text in der Zelle?
der user gibt von B3 bis B6 seinen Namen, Vornamen und Geburtsjahr ein, die Zellen sind bis dahin leer. Sind daten vorhanden schreibt er sie in die entsprechenden Felder (ist schon fertig). zum nächsten Feld kommt er durch Drücken von Enter. Mir fällt gerade auf, dass verlassen viel besser wäre. Dann könnte man auch gleich von B25 zu E2 springen.
turtle47 hat geschrieben:Dafür müsste man mit einem "Listener" arbeiten.
sagt mir noch nicht wirklich viel mach erst seit zwei drei Wochen oo
turtle47 hat geschrieben: Warum machst Du das nicht direkt mit einem Button? Den finde ich intuitiver als in eine Zelle klicken. Oder?
Bei einem Button muss er zur Maus greifen, dann eher nen Eingabefeld, was den Wert dann in die Zelle schreibt. Doch das fällt Optisch auf :(


ne einfache Erweiterung von oo "Eigenschaften Zelle" wäre da schon genial :D

Re: Makro bei "betreten" der Zelle starten

Verfasst: Do, 12.02.2009 17:12
von rob
Stephan hat geschrieben: und dafür, wie man das Gleiche mit OOo macht (nämlich mit einem Listener, sind Dir hier im Thread bereits 2 beispiele angeboten worden...Stephan
hab das aber nicht wirklich verstanden :(

Auf dem Link von Karo hab ich auch nicht wirklich was gefunden, da ist zwar calc_onCulumnChange eine ausführliche Anleitung, doch hmmm..

Re: Makro bei "betreten" der Zelle starten

Verfasst: Fr, 13.02.2009 13:07
von rob
jippee es funktioniert.


falls jemand mal ein ähnliches Problem hat :

Code: Alles auswählen

	Sub initializeListener
						oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
						oDocument = ThisComponent
						oDocument.getCurrentController.addSelectionChangeListener(oListener)
						
						End Sub
						
						Sub ClicListener_selectionChanged(oEvent)
						Dim Selection As Object
						Dim bTest as Boolean
						Dim Zelladr As String
						oSelection = oEvent.source.selection
						if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
						bTest = true
									If oSelection.CellAddress.row = oResentSelectedROw Then
													If oSelection.CellAddress.Column = oResentSelectedColnum Then
													bTest = false
																If bBackjump Then
																bBackjump = false
																Exit Sub
																endif
													end if
									end if
						bBackjump = bTest
						oResentSelectedROw = oSelection.CellAddress.row
						oResentSelectedColnum = oSelection.CellAddress.Column
									If oResentSelectedColnum =1  Then        'spalte der zelle aus welcher das Makro ausgeführt werden soll
									If oResentSelectedROw =5 then             'zeile der zelle aus welcher das Makro ausgeführt werden soll
										datenabgleich(lauf_zeile)               ' Makro das gestartet werden soll
										End If
									End IF
						end if
						end sub[/
denke mal das nun auch anfänger (like me) was damit anfangen können :D