Seite 1 von 2

zu einer Zelle und zurück springen (gelöst)

Verfasst: Di, 06.10.2009 16:44
von clag
Hallo Leutz,

in Calc bin ich über ein sehr umständliches Verhalten gestolpert, da wo eine Zelle einen direkten Verweis auf eine andere Zelle enthält
ich such nach einer Möglichkeit per shortcut zu der Zelle und wieder zurüch zu gelagen.

viewtopic.php?f=2&t=28464

wobei Karolus schon einen Ansatz zu einer Basic-Lösung aufgezeigt hat nur bin ich zu blöd da weiter zumachen.... :?

Code: Alles auswählen

sub link_to_source

sstring = thiscomponent.currentselection().formula
lstring = right (sstring, len(sstring)-1)


rem define variables
dim document   as object
dim dispatcher as object

rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = lstring

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
end sub
der Srung zur Zelle funktioniert auch soweit,

nun hätte ich das gern noch etwas erweitert

kann sich das Makro vielleicht zwei Adressen merken, 1. wo es her kam und 2. wo es hin soll und
beim zweiten aufruf shortcut in der ZielAdresse zur 2.Adresse zurück hüpft, also dahin wo es her kam und dann die gemerkten ZellAdressen löscht
und wenn beim zweiten shortcut, aktuelle Adresse und 2.gemerkte Adresse nicht =, dann beide Adressen löschen

hat da wer Zeit mir als StarBasic DAU mal etwas intensiver zu helfen ?

schon mal Danke voraus

Re: zu einer Zelle und zurüch springen

Verfasst: Fr, 09.10.2009 11:10
von clag
Hallo Leutz,

ich habe mal so Batch manier aufgeschrieben wie ich mir das Makro vorstelle
in Excel und VBA hätte ich mir das schon hingebastelt aber starbasic steh ich auf Schlauch :?

variable 1 = jumpstart
variable 2 = jumpziel
variable 2 = jumpback

wenn jumpback = "aktiv" goto 2.

1.
REM dieser Teil ist etwa das was der Code von Karolus bereits tut

aktuelle Zelladresse in jumpstart schreiben
Zieladresse herausfinden und in jumpziel schreiben
zu Adresse jumpziel wechseln
ein "aktiv" in jumpback schreiben
ende

2.
REM wenn beim zweiten Aufruf aktuelle Adresse und die variable "jumpziel" gleich sind,
REM zur Startadresse "jumpstart" zurück und die variablen leeren
REM wenn nicht
REM für den Fall das nach einem Enter in der Zelle
REM die aktuelle Zelle eine Zeile unter oder eine Spalte neben "jumpziel" liegt
REM abfragen ob es zurück gehen soll

wenn aktuelle Zelladresse=jumpziel
zur Zelle jumpstart wechseln"
3.
variable jumpstart leeren
variable jumpziel leeren
variable jumpback leeren
ende
sonst
wenn aktuelleZelladresse-1Z=jumpziel goto 4.
wenn aktuelleZelladresse-1S="jumpziel goto 4.
ende
4.
ein Dialogfenster öffnen "zurückspringen" JA NEIN
ja = goto 2.
nein = goto 3.
ende


vielleicht erbarmt sich ja doch noch jemand für mich,
der mir das in starbasic formulieren oder gar erklären kann / will

Re: zu einer Zelle und zurüch springen

Verfasst: Mo, 12.10.2009 14:09
von Charly
Hallo Clag!

Ich habe mich mal erbarmt und meinen Versuch als Datei angehängt.


Gruß
Charly

Re: zu einer Zelle und zurüch springen

Verfasst: Mo, 12.10.2009 16:36
von clag
Hi Charly,

YES, he can ! :D

ja, genau so hatte ich mir das vorgestellt,
wenn du wüstest wie viel Schrott schon in "Meine Makros Standart Modul1-5" steht
aber für mehr wie für ne MsgBox mit Adressausgabe der Zelle hat's noch nicht gereicht :? :(

also ganz herzlichen Dank das erspart mir ne Menge Frust
und der arme PC/Tastatur muss nun auch nicht mehr so leiden :lol:

PS
Der wollte bestimmt auch nen Makro in StarBasic schreiben :shock:
http://www.youtube.com/watch?v=fS19zZBJWJo&NR=1

Re: zu einer Zelle und zurüch springen

Verfasst: Sa, 17.10.2009 10:17
von Charly
Hallo Clag!

Du hast in einer PN die Frage gestellt, ob man mit einem Link auch zu einer externen Datei springen kann. Das ist eigentlich kein Problem. Das Problem kommt erst, wenn du von dieser Datei mit einem Tastaturkürzel wieder zurückspringen willst. Wenn das Makro in der ersten Datei gespeichert ist und du dort das Kürzel erzeugt hat, steht es nicht mehr zur Verfügung, wenn eine andere Datei aktiv ist. Du müsstest dann erst mit der Maus die Ausgangsdatei aktivieren und dann das Makro starten.

Ich habe mal versucht das in die Datei einzubauen, allerdings im Moment nur für eine File-Verknüpfnung. Aus Übersichtsgründen habe ich das Makro gesplittet.


Gruß
Charly

Re: zu einer Zelle und zurüch springen

Verfasst: Sa, 17.10.2009 20:01
von clag
Hallo Charly,

nach meinem Calc Frust Gestern ist das ja mal eine super Überraschung im positiven Sinn, hatte gar nicht mit gerechnet :D
da hast du dich ja noch ordentlich ins Zeug gelegt, dafür zuerst ein FETTES DANKE !

Passt auch gut zum meinem Thema und das Makro funktioniert auch ganz prima, nur beim Rücksprung aus einer anderen Datei klemmt es noch etwas
nämlich wenn die Datei bereits geöffnet war, da wird diese Datei ein zweites mal aber schreibgeschützt geöffnet und dann meckert Basic weil es die Datei speichern möchte aber nicht kann.

Im Moment denke ich ein editieren und speichern ist vielleicht nicht unbedingt nötig, da könnte man Datei generell ohne speichern verlassen und schließen.
hm hm Ich will aber erstmal noch ein wenig experimentieren .......
ich berichte dann aber in kürze.

schönen Abend noch

Re: zu einer Zelle und zurüch springen

Verfasst: So, 18.10.2009 14:32
von clag
Hallo Charly,

für mein ursprüngliches Vorhaben würde es tatsächlich reichen wenn die Quelldatei durch das Makro readonly geöffnet wird
und der zweite shortcut/Rücksprung die Datei unverändert und ohne Nachfrage wieder schließt.
Damit wird auch gleich verhindert, das versehentlich an der Datei etwas verändert wird sowie mehrfaches öffnen.

Es wäre aber möglich, dass die Datei bereits geöffnet ist und verändert wurde aber noch nicht gespeichert ist,
dann würde diese Variante möglicherweise ein falsches Ergebnis liefern.

Um das zu verhindern müsste das Makro erst prüfen ob die aufgerufene Datei bereits geöffnet ist,
wenn ja, dann auf die geöffnete Datei zugreifen, bei Rücksprung keine Schließ- oder Speicher Aktion
wenn nein, die Datei readonly öffnen und bei Rücksprung schließen.

Damit könnten auch alle Abfragen beim Rücksprung entfallen (schneller)
Wenn man die Quelldateien editieren möchte muss man sie eben vorher öffnen (wenn ja Abfrage)

diese Gedanken zum Verhalten des Makro sind so bei meiner Probiererei entstanden.....

ich hoffe es ist nicht so schwierig, das im Makrocode zu realisieren, aber das hängt wohl sehr stark von den persönlichen Basic Fähigkeiten :lol:
also für mich, zz noch nicht machbar :cry:

schönes Rest Wochenende noch

Re: zu einer Zelle und zurüch springen

Verfasst: So, 18.10.2009 20:33
von Charly
Hallo Clag!

Ich habe jetzt noch eine Abfrage nach geöffneten Dokumenten eingebaut.


Gruß
Charly

Re: zu einer Zelle und zurüch springen

Verfasst: So, 18.10.2009 21:31
von clag
Hallo Charly

zuerst vielen Dank für deine Äkschen,
ich werde das Makro gleich ausprobieren und dann berichten aber vermutlich erst morgen..

schönen Abend noch

Re: zu einer Zelle und zurüch springen

Verfasst: Mo, 19.10.2009 19:07
von clag
Hallo Charly,

wenn ich das Makro aufrufe und die Quelldatei war bereits geöfnet kommt eine MsgBox mit "kann die Datei nur schreibgeschützt öffnen" "ok"
danach kommt eine Basic Fehlermeldung "Objektvariable nicht belegt" egal ob ich ok oder esc drücke ?

kann man das schließen/speichern nicht wie im Programm hand haben,
dass erst dann wenn die Datei verändert wurde die Frage gestellt wird "speichern oder verwerfen"?

dann wäre ja schon alles im lot :D

schönen Abend

Re: zu einer Zelle und zurüch springen

Verfasst: Mo, 19.10.2009 20:44
von Charly
Hallo Clag!

Mein abgeändertes Makro macht folgendes. Wenn es eine Verknüpfung, beginnend mit "='file", findet, öffnet es diese Datei. Wenn Sie schreibgeschützt ist, wird sie wieder geschlossen und das Makro sucht nach einer geöffneten Datei, die die gesuchte Url hat. Erst, wenn er eine solche nicht findet, öffnet er wieder die schreibgeschützte Datei, mit dem von dir beschriebenen Hinweis. Dieser Hinweis hätte also bei dir nicht hochkommen dürfen. Die letzte Fehlermeldung könnte dadurch gekommen sein, weil ich die Arrayvariable Dummy nicht nochmals im Sub AktivesDokument(url) mit Dim deklariert habe, was bei Arrays erforderlich ist. Aber bis zum zweiten Öffnen der Datei und damit zur Fehlermeldung hätte es gar nicht kommen dürfen.

Auf meinen PC funktioniert das Makro einwandfrei. Leider kann ich die Ursache bei dir nicht finden, wenn ich den Fehler nicht reproduzieren kann.


Gruß
Charly

Re: zu einer Zelle und zurüch springen

Verfasst: Mo, 19.10.2009 22:21
von clag
Hallo Charly,

dann werde ich noch etwas experimentieren und probieren, vielleicht kann ich erkennen was da passiert ..
ich werde berichten......

trotzdem Danke

Re: zu einer Zelle und zurüch springen

Verfasst: Di, 20.10.2009 10:46
von Charly
Hallo Clag!

Ich habe mal die Reihenfolge der Befehle geändert und ein Unterprogramm weniger gemacht. Vielleicht hilft das bei der Problemlösung. Bei meinem Linuxrechner, hatte ich nämlich beim Erkennen vom zweimaligen Öffnen Probleme, was ich auf dem Windowsrechner nicht hatte.

Gruß
Charly

Re: zu einer Zelle und zurüch springen

Verfasst: Di, 20.10.2009 17:27
von clag
Hallo Charly

ja so scheint es besser zu funktionieren ohne Basic Mecker beim Rücksprung

dafür sind mir nun zwei andere Wünsche eingefallen :roll:

1. startet man das Makro in einer Zelle auf die keine Verknüpfung auf eine Andere Zelle enthält gibt es auch Basic Mecker
in dem Fall würde ich mir eine MsgBox wünschen "dies Makro funktioniert nur mit Zellen die auf eine andere Zelle verweisen !" ok
und Makro beenden

2. für den Rücksprung würde ich mir ein etwas anderes Verhalten wünschen und zwar so,
dass der Rücksprung unmittelbar ausgeführt wirdsolange der Curser/Focus noch über/auf auf der Zelle liegt die aufgerufen wurde, also bei "aktuelle Zell-adresse"="Sprungziel Zell-adresse"
und erst wenn der Focus auf einer anderen Zelle liegt sollte der Rücksprung mit Abfrage wie bereit jetzt realisiert erfolgen.

ich hoffe du raufst dir nicht zuu seehhr die Haare wenn dies liest :lol:

trotz allem, wünsche ich dir einen "relaxten" Abend

Re: zu einer Zelle und zurüch springen

Verfasst: Mi, 21.10.2009 10:28
von Charly
Hallo Clag!

Ich habe jetzt eine Abfrage eingebaut, ob die Zelle eine Formel enthält. Wenn nicht, bricht das Programm ab. Eine weitere Prüfung, ob z.B. eine verwendbare Adresse in der Formel steht ist mir zu aufwendig. Das geht wahrscheinlich nur durch eine Error-Handler-Routine, durch die die Systemmeldung abgefangen und durch eine eigene Meldungsbox ersetzt wird.

Von einem externen Dokument springt das Makro jetzt, ohne Nachfrage und Schließen zurück

Gruß
Charly