[RISOLTO] Spin Button con macro up/down

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Plasmucci
Messaggi: 9
Iscritto il: lunedì 21 gennaio 2019, 18:12

[RISOLTO] Spin Button con macro up/down

Messaggio da Plasmucci »

Buon pomeriggio a tutti,
vorrei chiedere il vostro aiuto in quanto non sono riuscito a trovare una soluzione (e non so se a questo punto è fattibile proprio la risoluzione del problema...)

In pratica ho un file Calc che è già funzionante come macro e tutto.
Ho due pulsanti che lanciano due macro diverse: un pulsante aumenta il valore di una cella, l'altro pulsante lo diminuisce.

Vorrei sostituire,e snellire quindi anche il codice delle macro, i due pulsanti con un singolo spin button che avrà le stesse funzioni (aumenta / diminuisce). Il problema è che non riesco a trovare il modo di indicare la differenza di pressione delle freccie dello spin button e se associo la macro allo spin button, lui mi prende la pressione identica sia che premo la freccetta a destra o a sinistra.
In excel vba era presente la differenza fra spin up (e quindi aumenta) e spin down (e quindi diminuisce), ma non trovo il corrispettivo di openoffice.

Esiste un modo per differenziare nella macro la pressione spin button up e down?

Grazie mille!


Note aggiuntive: potrei associare lo spin button e collegarlo alle singole celle, il fatto è che il valore da aumentare / diminuire è dinamico nel senso che è estrapolato da una macro che ricerca tale valore nel secondo foglio. Ed anche per assurdo volessi utilizzare più spin button, dovrei inserirne circa per 300 celle!
Questo per spiegare come mai necessitavo di uno spin button a cui associare 2 macro diverse invece che collegarlo ad una cella
Ultima modifica di Plasmucci il lunedì 2 dicembre 2019, 10:33, modificato 1 volta in totale.
OpenOffice 4.1.5
Window 10 pro
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Spin Button con macro up/down

Messaggio da Gaetanopr »

E' tutto possibile, ma devi allegare un tuo file di esempio con le varie macro e i spin button e spiegare da dove prelevare i valori di incremento e decremento.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Plasmucci
Messaggi: 9
Iscritto il: lunedì 21 gennaio 2019, 18:12

Re: Spin Button con macro up/down

Messaggio da Plasmucci »

Gaetanopr ha scritto:E' tutto possibile, ma devi allegare un tuo file di esempio con le varie macro e i spin button e spiegare da dove prelevare i valori di incremento e decremento.
Certamente!
credevo esistesse un'istruzione precisa per la macro che magari mi sfuggiva, creo un file piccolo e veloce (quello originale è pieno di funzioni, celle, macro...) e lo invio!
OpenOffice 4.1.5
Window 10 pro
Plasmucci
Messaggi: 9
Iscritto il: lunedì 21 gennaio 2019, 18:12

Re: Spin Button con macro up/down

Messaggio da Plasmucci »

Ecco il file contenente: il primo foglio che è un riepilogo della ricerca con i 2 pulsanti + e -, il secondo foglio che contiene la lista di tutti gli articoli.
Inserendo il codice nel primo foglio, in E3 riporta il quantitativo che trova tramite un cercavert nel foglio con tutti gli articoli.
Premendo il pulsante + o il pulsante meno succede che viene lanciata una delle 2 macro che: ricerca se il codice inserito è presente (in pratica fa un cercavert) e nel caso lo trova va ad aggiungere +1 o -1 al quantitativo dei pezzi. E logicamente viene aggiornata la lista nel secondo foglio.

é possibile quindi sostituire i 2 pulsanti e utilizzare uno spin button che fa esattamente le stesse procedure?

Grazie mille!
Allegati
TEST.ods
(19.09 KiB) Scaricato 113 volte
OpenOffice 4.1.5
Window 10 pro
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Spin Button con macro up/down

Messaggio da Gaetanopr »

Ti allego tuo esempio con spin button, per funzionare basta dare al pulsante di selezione il nome della cella a cui è associata, nell'esempio B3, quindi se crei altri campi con altri spin button dagli il nome della cella da dove deve prelevare il codice da ricercare nel secondo foglio.
La macro và associata all'evento mouse dentro.
Allegati
TEST.ods
(19.02 KiB) Scaricato 101 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Plasmucci
Messaggi: 9
Iscritto il: lunedì 21 gennaio 2019, 18:12

Re: Spin Button con macro up/down

Messaggio da Plasmucci »

Gaetanopr ha scritto:Ti allego tuo esempio con spin button, per funzionare basta dare al pulsante di selezione il nome della cella a cui è associata, nell'esempio B3, quindi se crei altri campi con altri spin button dagli il nome della cella da dove deve prelevare il codice da ricercare nel secondo foglio.
La macro và associata all'evento mouse dentro.
Accidenti che velocità!!! :bravo:
Elegantissimo il fatto che bypassi la gestione dell'aumentare/diminuire tramite macro sul pulsante spin, lasciandolo quindi funzionare in maniera standard (e quindi associato ad una cella) ed usando la macro per ricercare il valore da modificare e passare poi il tutto alla relativa cella!! E la cosa geniale che mai avrei pensato è quella di usare l'evento mouse dentro!!! complimenti davvero!!

Adesso devo studiare il codice visto che hai usato molte funzioni che non conosco.
Per dovere di completezza ti chiedo però alcune info aggiuntive,se posso.

Alcune volte, e devo capire quando, mi presenta questo errore ma il funzionamento comunque rimane ok e non da problemi...da cosa può essere dovuto?
Immagine

Mi è successo inoltre che nonostante avessi inserito un codice esistente, lo spin button non funzionava. Anche qui devo capire come mai...secondo te può dipendere dal fatto che alcuni valori da ricercare non sono numeri ma alfanumerici? Ad esempio codici come " 6460/T 998 ", oppure stò vaneggiando?!

Inoltre, e ti chiedo scusa delle mille domande, secondo te a livello estetico, con cosa potrei sostituire la semplice cella di ricerca del primo foglio (cella B3)? Se utilizzassi una casella di testo o un campo a maschera sarebbe problematico utilizzarli in maniera dinamica?

Io per ora non ti disturbo oltre, vado a studiare per bene come funziona la macro da te scritta! Ti aggiorno a mia volta su eventuali sviluppi o problematiche
OpenOffice 4.1.5
Window 10 pro
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Spin Button con macro up/down

Messaggio da Gaetanopr »

Per la ricerca del codice nel foglio ho usato parte della tua macro, solitamente per questo tipo di ricerche uso altri metodi(quasi mail Do While) se il codice ricercato non è presente con la macro scritta in quel modo si ci ritrova in un loop infinito che porterà all'arresto del programma, ho modificato la macro per evitare ciò ed essere quindi più performante.
Plasmucci ha scritto: Mi è successo inoltre che nonostante avessi inserito un codice esistente, lo spin button non funzionava. Anche qui devo capire come mai...secondo te può dipendere dal fatto che alcuni valori da ricercare non sono numeri ma alfanumerici? Ad esempio codici come " 6460/T 998 ", oppure stò vaneggiando?!
Questo codice in realtà non è esistente, comunque ho inserito un menù a tendina nella cella B3 e ho creato un nome definito "codici" con la seguente area "$FENICE.$A$8:$A$240", scegliendo il codice dal menù a tendina non potrai sbagliare e in ogni caso se dovessi inserire un codice non esiste la macro ti avvertirà.

Saluti
Allegati
TEST.ods
(19.95 KiB) Scaricato 102 volte
Ultima modifica di Gaetanopr il venerdì 29 novembre 2019, 10:11, modificato 1 volta in totale.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Plasmucci
Messaggi: 9
Iscritto il: lunedì 21 gennaio 2019, 18:12

Re: Spin Button con macro up/down

Messaggio da Plasmucci »

Gaetanopr ha scritto:Per la ricerca del codice nel foglio ho usato parte della tua macro, solitamente per questo tipo di ricerche uso altri metodi(quasi mail Do While) se il codice ricercato non è presente con la macro scritta in quel modo si ci ritrova in un loop infinito che porterà all'arresto del programma, ho modificato la macro per evitare ciò ed essere quindi più performante.
Avevo supposto anche io che un Do While non era la soluzione più bella ma mi pareva quella più immediata.
Dalle mie prove, al momento, non sono mai incappato in un loop infinito e nel caso non venisse trovato il codice ricercato mi riporta al posto del quantitativo un #ND nella cella (che potrei sostituire con un testo doverso utilizzando un se.errore
Consiglieresti in linea generale di utilizzare ad esempio un For con dentro un IF che controlla se la condizione è rispettata? Come avresti agito tu (lo chiedo solamente per migliorare sia la tecnica che la forma, c'è sempre da imparare qualcosa di nuovo) ?

Per quanto riguarda invece l'errore OutOfBoundException sai da cosa può essere dovuto? Ho controllato anche con una ricerca online ma nella documentazione Open Office non spiega niente se non a grandi linee:

"This exception is thrown to indicate that a container has been accessed with an illegal index
The index is either negative or greater than or equal to the count of the elements."


Ed onestamente non capisco dove prende questo index maggiore del conteggio degli elementi visto che viene utilizzato un range specifico di celle...

Adesso controllo il tuo file aggiornato e ti ringrazio in anticipo, immagino sia perfetto e funzionale!
OpenOffice 4.1.5
Window 10 pro
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Spin Button con macro up/down

Messaggio da Gaetanopr »

Plasmucci ha scritto: Avevo supposto anche io che un Do While non era la soluzione più bella ma mi pareva quella più immediata.
Dalle mie prove, al momento, non sono mai incappato in un loop infinito e nel caso non venisse trovato il codice ricercato mi riporta al posto del quantitativo un #ND nella cella (che potrei sostituire con un testo doverso utilizzando un se.errore
Consiglieresti in linea generale di utilizzare ad esempio un For con dentro un IF che controlla se la condizione è rispettata? Come avresti agito tu (lo chiedo solamente per migliorare sia la tecnica che la forma, c'è sempre da imparare qualcosa di nuovo) ?
Invece no, sul foglio ti viene restituito #ND nella cella E3 se lanci la macro questa va in Loop (naturalmente non lanceresti la macro vedendo l'errore #ND)
Potresti usare For con dentro If va bene lo stesso per poche centinaia o migliaia di righe, come farei io è nell'esempio che ho postato.
Plasmucci ha scritto: Per quanto riguarda invece l'errore OutOfBoundException sai da cosa può essere dovuto? Ho controllato anche con una ricerca online ma nella documentazione Open Office non spiega niente se non a grandi linee:
In linea generale viene restituito quando si va fuori dal valore per la variabile in oggetto, sicuramente la macro sarà andata in loop e la variabile i avrà assunto un valore maggiore delle righe disponibili in Calc quindi

Codice: Seleziona tutto

codice = Sh.GetCellByPosition(0, i).string
sarà stata 1048576 + 1, considera che con questo ciclo tutte le volte che il codice non sarà uguale a Sh.GetCellByPosition(0, i).string, la variabile i verrà aumentata di una unità superando il limite di 1048576 righe(e prima o poi lo raggiungerai non trovando corrispondenza) andrai in OutOfBoundException
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Plasmucci
Messaggi: 9
Iscritto il: lunedì 21 gennaio 2019, 18:12

Re: Spin Button con macro up/down

Messaggio da Plasmucci »

Buongiorno!
ho finalmente scaricato il tuo file del quale ti ringrazio e posso affermare che adattandolo un attimo ottengo alla perfezione il risultato voluto.
Io ti ringrazio infinitamente Gaetanopr, sei stato gentilissimo e mi hai dato ottimi spunti per risolvere ed approfondire la cosa!! :super:

Per quanto mi riguarda possiamo contrassegnarlo come risolto!
Un saluto
OpenOffice 4.1.5
Window 10 pro
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [RISOLTO] Spin Button con macro up/down

Messaggio da Gaetanopr »

:super:
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi