Pagina 1 di 1

Coordinate.

Inviato: domenica 12 agosto 2018, 11:56
da tomsor
Salve.
Ho scritto questa funzione:
function test()
msgbox 12
end function
Domanda:
E' possibile fare in modo che msgbox visualizzi le coordinate della cella in cui la funzione è stata inserita?
Grazie.

Re: Coordinate.

Inviato: domenica 12 agosto 2018, 22:26
da charlie
Argomento spostato.

Ciao e benvenuto sul forum.
Se intanto ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Per una panoramica delle regole del forum consulta il Manuale di sopravvivenza: http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.

Re: Coordinate.

Inviato: lunedì 13 agosto 2018, 9:59
da patel
Mi sembra una cosa priva di senso, ce la vuoi spiegare ?

Re: Coordinate.

Inviato: lunedì 13 agosto 2018, 11:00
da charlie
Nella sua presentazione @tomsor ha già scritto:
tomsor ha scritto: Il problema è stato formulato in maniera da rendere del tutto superflua qualsiasi ulteriore spiegazione.
Sono ovviamente disponibile (se il problema sarà risolto) a ripondere a questa domanda: a che ti serve questa funzione?

Re: Coordinate.

Inviato: lunedì 13 agosto 2018, 11:36
da patel
pessima presentazione, da un programmatore C# mi aspetterei che si documenti sulle User Define Functions e sul loro uso su calc ed excel prima di proporre quesiti del genere

Re: Coordinate.

Inviato: lunedì 13 agosto 2018, 13:00
da tomsor
Salve.
Le riconfermo di aver, per alcuni anni, programmato in C# e sporadicamente anche in alcuni altri linguaggi: al livello, ovviamente, della mia rudimentale e lacunosa competenza in tutto.
Ciò premesso, dichiaro di essere contento di vederla coinvolta nella discussione, poiché, da quello che dice, mostra (signor patel) di essere molto più esperto di me in materia.
Riepilogo i termini della questione.
Ecco funzione da cui sono partito:
function test()
msgbox 12
end function
la quale, una volta inserita in un cella, visualizza una finestrella con un bel 12.
E' abbastanza ovvia la modifica da apportare alla funzione se io, anziché visualizzare il 12, volessi visualizzare la stringa "buongiorno".
Questo tanto per capirci.
Ripropongo dunque la mia domanda:
può scrivermi, cortesemente, le righe di codice da inserire nella funzione affinché la msgbox visualizzi le coordinate della cella in cui la funzione viene inserita?
Come si dice: più chiaro di così si muore.
Se a lei dovesse sfuggire l'utilità di questo quesito (la cui soluzione mi permetterà di fare cose che ritengo invece molto utili) ne potremmo riparlare in seguito, ma il quesito rimane.
La saluto e la ringrazio per l'attenzione.

Re: Coordinate.

Inviato: lunedì 13 agosto 2018, 13:29
da hubert lambert
Ciao,
tomsor ha scritto:può scrivermi, cortesemente, le righe di codice da inserire nella funzione affinché la msgbox visualizzi le coordinate della cella in cui la funzione viene inserita?
È semplicemente impossibile: una funzione personale non può accedere al oggetto "cella" che la contiene.

L'elusione sarebbe di utilizzare la funzione con argumenti:

Codice: Seleziona tutto

=TEST(RIF.COLONNA(); RIF.RIGA())
con il codice:

Codice: Seleziona tutto

function TEST(col, row)
    doc = thiscomponent
    cell = doc.CurrentController.ActiveSheet.getCellByPosition(col-1, row-1)
    msgbox cell.AbsoluteName
end function
Saluti.

Re: Coordinate.

Inviato: lunedì 13 agosto 2018, 18:35
da tomsor
Per Hubert Lambert.
La ringrazio della sua attenzione.
La sua risposta è andata nella direzione che temevo: quella di aver posto un problema che non ha soluzioni.
Lei ha anche ha colto il punto chiave della questione, e cioè la pretesa di voler implementare una funzione per la quale non fosse necessario passare, in modo esplicito, degli argomenti, pur dovendo, la funzione, fare elaborazioni basate sulle sue proprie coordinate; mi basavo infatti sulla convinzione, evidentemente errata, che la funzione dovesse già di suo 'avere consapevolezza' della cella ospitante.
Infatti se scrivo

function test()
test="buongiorno"
end function

verifico che la funzione suddetta sa esattamente in quale punto del foglio mettere la stringa, perché 'sa' in quale cella si trova.
Mi domando: se la funzione sa questo, perché io non posso sapere la stessa cosa? Forse il compilatore mette in atto, a vantaggio del programmatore, qualche misura di 'protettiva'?
Il tutto mi sembra poco chiaro.
Ringrazio nuovamente per la sua attenzione e la saluto cordialmente.

P.S.: Per il momento non metto 'RISOLTO' al quesito.

Re: Coordinate.

Inviato: lunedì 13 agosto 2018, 20:57
da patel
il Risolto non deve essere mai messo visto che non c'è soluzione, meglio aprire un'altra discussione e passare al vero scopo senza premettere vincoli

Re: Coordinate.

Inviato: martedì 14 agosto 2018, 12:10
da tomsor
Salve.
Ho recentemente creato un foglio elettronico che risponde ad alcune mie necessità e che funziona perfettamente. Poiché sono di indole perfezionista, senza ahimé averne spesso le capacità, ho pensato che una funzione, come quella da me richiesta nell'impostare questa discussione, avesse potuto migliorare l'aspetto estetico e formale del mio foglio di lavoro, per la parte riguardante il retrostante codice utente.
Pare però che una tale funzione non sia implementabile (come esplicitamente dichiarato da hubert, il quale, peraltro, ha perfettamente colto uno dei punti fermi della mia richiesta).
Ho dato a questo punto una fugace occhiata al sito inglese di questo blog. Vedasi:
[OOo Basic] Row/Column of Currently Executing Formula Cell?
[Calc, Basic] Introspective cell functions
[Solved]service.callFunction for functions without arguments
tanto per citare alcune discussioni più o meno pertinenti.
Ho potuto verificare che la questione da me posta non è affatto peregrina, ma al contrario piuttosto dibattuta e ricorrente.
Pare (in conclusione) che la problematica non sia immediatamente gestibile in Calc, ma che lo sia, invece, in Excel.
La questione per me, per il momento, rimane aperta; ma mi rendo anche conto che ho ottenuto, dalle persone che gentilmente sono intervenute nella discussione, il massimo che era possibile ottenere.
Da questo punto in poi mi rivolgo a charlie.
Mi è stato detto che non posso mettere [RISOLTO] (nulla infatti è stato risolto), posso allora cliccare su 'Blocca argomento' per evitare a tutti ulteriori perdite di tempo?
Grazie

Re: Coordinate.

Inviato: martedì 14 agosto 2018, 21:44
da charlie
Lascia tutto così, grazie.

Re: Coordinate.

Inviato: mercoledì 15 agosto 2018, 11:30
da tomsor
OK, buon lavoro.