von Stephan » Mi, 26.04.2017 06:11
Steffen_dcw hat geschrieben: ↑Di, 25.04.2017 17:59
Hallo Stephan,
genau das funktioniert eben nicht, was aber nicht auf den ersten Blick auffällt, da sich der Zellzeiger ja korrekt bewegt. Klicke ich dann aber unmittbar auf die Scrollbalken der Anwendung, dann wird nicht gescrollt, sondern der Zellzeiger springt unkontrolliert nach rechts bzw. unten. Ich kann auch nicht im Makrofenster schreiben. Wenn ich dann händisch eine Zelle anklicke, klappt alles wieder.
Das Ganze kann natürlich auch ein Bug von Openoffice für Windows sein, was ich aber nicht verifizieren kann.
Wie schon "F3K Total" schreibt, ist dieses Problem nicht ohne Weiteres nachvollziehbar. Wenn es bei Dir reproduzierbar auftritt kannst Du uns nur Dein konkretes Makro und die zu bearbeitende Datei, sowie Dein genaues Vorgehen, sowie genaue Programmversion posten in der Hoffnung das man es nachstellen kann, nur dann kann man versuchen der Ursache auf die Spur zu kommen.
z.B. kann das Makro:
http://www.dannenhoefer.de/faqstarbasic ... Zelle.html
deshalb versagen, weil im Verlauf der Schritte die Dein Makro vorher mit der Datei ausführt das ThisComponent-Objekt wechselt und das Makro dadurch das falsche Objekt anspricht. Du kannst das orientierend testen indem Du z.B. nach:
die Zeile:
dabei muss dann der zum Dokument passende Titel angezeigt werden, wird der Titel eines anderen Fensters angezeigt belegt das das Du das falsche Objekt hast. Abhilfe lässt sich schaffen indem Du ganz am Anfang Deines Makros das Dokumentobjekt in einer global deklarierten Variable speicherst und am Ende Deines Makros den Zugriff auf die Zelle über diese Variable machst.
Also am Anfang z.B.:
Code: Alles auswählen
Global tc As Object
Sub Main()
tc = ThisComponent
'... Dein Code
'Fokus auf Zelle:
myView = tc.CurrentController
mysheet = tc.sheets(0)
mycell = mysheet.getCellByPosition(0,0)
myView.Select(mycell)
End Sub
Das überhaupt diese Art des Fehlers vorliegt ist aber rein geraten und muss nicht so sein, ohne genaue Untersuchung kann man den Fehler
nicht zuverlässig finden.
Gruß
Stephan
[quote=Steffen_dcw post_id=269275 time=1493135981 user_id=59430]
Hallo Stephan,
genau das funktioniert eben nicht, was aber nicht auf den ersten Blick auffällt, da sich der Zellzeiger ja korrekt bewegt. Klicke ich dann aber unmittbar auf die Scrollbalken der Anwendung, dann wird nicht gescrollt, sondern der Zellzeiger springt unkontrolliert nach rechts bzw. unten. Ich kann auch nicht im Makrofenster schreiben. Wenn ich dann händisch eine Zelle anklicke, klappt alles wieder.
Das Ganze kann natürlich auch ein Bug von Openoffice für Windows sein, was ich aber nicht verifizieren kann.
[/quote]
Wie schon "F3K Total" schreibt, ist dieses Problem nicht ohne Weiteres nachvollziehbar. Wenn es bei Dir reproduzierbar auftritt kannst Du uns nur Dein konkretes Makro und die zu bearbeitende Datei, sowie Dein genaues Vorgehen, sowie genaue Programmversion posten in der Hoffnung das man es nachstellen kann, nur dann kann man versuchen der Ursache auf die Spur zu kommen.
z.B. kann das Makro:
http://www.dannenhoefer.de/faqstarbasic/WiekannmandenaktuellenCursoraufeineZelle.html
deshalb versagen, weil im Verlauf der Schritte die Dein Makro vorher mit der Datei ausführt das ThisComponent-Objekt wechselt und das Makro dadurch das falsche Objekt anspricht. Du kannst das orientierend testen indem Du z.B. nach:
[code]myDoc = thisComponent[/code]
die Zeile:
[code]Msgbox myDoc.title[/code]
dabei muss dann der zum Dokument passende Titel angezeigt werden, wird der Titel eines anderen Fensters angezeigt belegt das das Du das falsche Objekt hast. Abhilfe lässt sich schaffen indem Du ganz am Anfang Deines Makros das Dokumentobjekt in einer global deklarierten Variable speicherst und am Ende Deines Makros den Zugriff auf die Zelle über diese Variable machst.
Also am Anfang z.B.:
[code]Global tc As Object
Sub Main()
tc = ThisComponent
'... Dein Code
'Fokus auf Zelle:
myView = tc.CurrentController
mysheet = tc.sheets(0)
mycell = mysheet.getCellByPosition(0,0)
myView.Select(mycell)
End Sub
[/code]
Das überhaupt diese Art des Fehlers vorliegt ist aber rein geraten und muss nicht so sein, ohne genaue Untersuchung kann man den Fehler
nicht zuverlässig finden.
Gruß
Stephan