[Risolto] condizione macro

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

[Risolto] condizione macro

Messaggio da Alelon »

Grazie a unlucky83.
Ultima modifica di Alelon il domenica 28 novembre 2021, 14:35, modificato 2 volte in totale.
OpenOffice 4.1.13
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: condizione macro

Messaggio da patel »

Le macro possono essere abbinate ad eventi, quindi se modifichi il foglio e la cella è vuota si può fare, ma devi spiegare meglio il tuo obiettivo ed allegare un file di esempio
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

Salve . il file preventivo all'apertura abilita la macro che fa aumentare di 1 il numero progressivo e salva.dopo di che io lo compilo e lo esporto oppure lo salvo con nome, in modo di poter fare modifiche sul file salvato con nome, il problema e' che quando apro il file salvato con nome la macro si abilita e mi cambia il numero progressivo.che io vorrei non cambiasse in quel caso.
Grazie ma non mi fa allegare il file per le dimensioni
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

potresti modificare la macro mettendo un if all'inizio dell'esecuzione. Se la cella in questione "IsEmpty" fa eseguire i comandi, altrimenti nulla fino a "end sub"

Codice: Seleziona tutto

sub ....
if isEmpty(Cella) then
 "comandi"
...
end if
end sub
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

Grazie ma non so come proceder
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

Alelon ha scritto:Salve . il file preventivo all'apertura abilita la macro che fa aumentare di 1 il numero progressivo e salva
Puoi riportare il codice della macro copiando e incollando il suo testo?
Oppure potresti creare una copia del file alleggerita da allegare alla discussione, contenente la macro ma con il solo foglio in questione, anche vuoto, con la cella in questione evidenziata.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

Eccovi il ile alleggerito
Allegati
Preventivo - Copia1.ods
eccolo
(14.34 KiB) Scaricato 66 volte
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

Ecco un esempio di come puoi procedere
Allegati
Preventivo - Copia1.ods
(15.26 KiB) Scaricato 67 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

cosi non esegue mai la macro??
o sbaglio qualcosa?
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

Così avvia la macro ma fa un controllo e non esegue nulla, a parte un messaggio che ho inserito per farti vedere che esegue la macro ma non fa nulla.
Visualizzi il msgbox all'apertura del mio allegato? Se fai caso alla numerazione, ogni volta che chiudi e apri il file la numerazione resta invariata.
La macro del mio allegato è:

Codice: Seleziona tutto

Sub IncrementaSalva
Dim Doc as object, Sheet as object
Doc = thiscomponent
Sheet = Doc.Sheets(0)
oCella=Sheet.getCellRangeByName("H3")
If isEmpty(oCella) then
	oCella.Value = oCella.Value +1
	Doc.store()
Else 
'trasforma in commento questo comando per non visualizzare il messaggio
 msgbox "macro non esegue nulla."&chr(13)&"Trasforma in commento il comando presente nel codice responsabile di questo messaggio" 
End if
End Sub
la macro originale che avevi allegato era invece:

Codice: Seleziona tutto

Sub IncrementaSalva
Dim Doc as object, Sheet as object
Doc = thiscomponent
Sheet = Doc.Sheets(0)
Sheet.getCellRangeByName("H3").Value = Sheet.getCellRangeByName("H3").Value +1
Doc.store()
End Sub
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

Chiedo scusa in anticipo se sicuramente non ho esposto bene quello che vorrei. Ci riprovo ...
Apro il file Preventivo, parte la macro e aggiorna il numero. Fin qui ok, compilo il Preventivo e ne salvo una copia con nome, per esempio " Pippo 3". Mettiamo il caso che io debba aggiungere o modificare qualcosa in Pippo 3, vorrei che la macro non si attivasse.
In modo da poter fare delle modifiche senza che il numero, in questo caso, 3 si incrementi di uno.
Praticamente la macro deve funzionare solo con il preventivo VERGINE per così dire.
Grazie ancora
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

Siccome il file da te allegato mi dava un errore sulla libreria della macro, credo che sia il caso di fare ulteriore chiarezza.
Il tuo allegato, nonostante presenti la macro, all'evento apertura documento prova ad eseguire una macro presente tra le macro del programma del tuo pc e non quella incorporata nel tuo documento. Per questo motivo, chiunque nel forum scaricherà e aprirà il tuo allegato, si troverà un errore di esecuzione per mancanza della macro nel percorso indicato.

Detto ciò, ho modificato l'associazione macro-evento apertura documento, selezionando la macro incorporata all'interno del documento e tale macro ho modificato.

C'è un motivo particolare del perchè stai usando la macro salvata nel percorso "application" e non nel percorso "document"? Se ci tieni a mantenere questa impostazione ok, anzi è pure meglio...perchè ti basta effettuare la modifica della macro presente in "application" con la macro che ti ho fornito io per avere il nuovo funzionamento sui file vecchi e nuovi.

La macro deve avviarsi, perchè deve controllare se il foglio in questione è vergine (quale cella deve controllare per stabilire se è "vergine"? non D5 ovviamente! nel mio esempio ho scelto D5 per semplicità...quindi dovresti specificare quale cella valutare) oppure no. Se è vergine procede con l'esecuzione, se non è vergine non fa nulla e si chiude.

Puoi spiegarmi per cortesia come hai provato il mio allegato? Grazie
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

Potrebbe controllare la d14.
Non sono affatto pratico Per questo ti chiedo pazienza.
Non vedo il tuo allegato.
OpenOffice 4.1.13
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

come si fa per caricare la macro nel percorso document?
OpenOffice 4.1.13
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: condizione macro

Messaggio da patel »

domanda incomprensibile
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

tu hai scritto : C'è un motivo particolare del perchè stai usando la macro salvata nel percorso "application" e non nel percorso "document"?
che significa?
OpenOffice 4.1.13
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: condizione macro

Messaggio da Alelon »

Mi avete abbandonato :) :) :) :) :) :) :) :)
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

Alelon ha scritto:Potrebbe controllare la d14.
Non sono affatto pratico Per questo ti chiedo pazienza.
Non vedo il tuo allegato.
L'allegato a cui mi riferivo lo trovi qui

Volendo controllare D14 e supponendo che il numero progressivo si trovi in H3 (perchè nel codice da te fornito questa è la cella indicata), il codice può diventare

Codice: Seleziona tutto

Sub IncrementaSalva
Dim Doc as object, Sheet as object
Doc = thiscomponent
Sheet = Doc.Sheets(0)
oCella=Sheet.getCellRangeByName("D14")
If isEmpty(oCella) then
	Sheet.getCellRangeByName("H3").Value =Sheet.getCellRangeByName("H3").Value +1
	Doc.store()
Else 
'trasforma in commento questo comando per non visualizzare il messaggio
 msgbox "macro non esegue nulla."&chr(13)&"Trasforma in commento il comando presente nel codice responsabile di questo messaggio" 
End if
End Sub
Allego nuovo file di esempio
Allegati
Esempio.ods
(15.29 KiB) Scaricato 61 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: [Risolto] condizione macro

Messaggio da Alelon »

Domani la proverò ora non ho il pc.
Quindi la macro non si attiva se la D14 è piena/scritta??
Grazie
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

Alelon ha scritto:tu hai scritto : C'è un motivo particolare del perchè stai usando la macro salvata nel percorso "application" e non nel percorso "document"?
che significa?
Fai attenzione a chi ti scrive. Sembra che tu hai confuso @patel con me (@unlucky83)
Qui di seguito ti allego l'immagine della finestra che si apre quando vado su Strumenti>Macro>Organizza Macro>Libreoffice Basic (programma che uso al posto di Openoffice)
Schermata del 2021-11-28 21-16-59.png
Per salvare una macro all'interno del documento, devi selezionare il documento nell'elenco di sinistra, poi cliccare sulla freccettina alla sua sinistra così apri ciò che contiene, tutti i documenti contengono "Standard", selezioni Standard, se non ha una freccettina clicchi sul pulsante a destra "New" per creare un modulo (un modulo è una "pagina" in cui si scrive il/i codice/i di una/più macro), poi clicchi su "ok" e ti si crea il modulo e si apre automaticamente, così puoi scrivere/modificare il tuo codice. Se ha una freccettina clicchi sulla freccettina, così scopri i moduli che contiene il documento nella libreria "Standard" , selezioni quello che ti interessa e poi clicchi sul pulsante a destra "Modifica", così ti si apre il modulo per effettuare le modifiche del codice.

Stessa procedura la puoi fare per creare o modificare moduli all'interno dell'applicazione del tuo pc, nel mio caso andrei su Macro di Libreoffice.

Se vuoi trasferire una macro dal documento al modulo all'interno dell'applicazione (o viceversa), basta copiare e incollare il codice da una parte all'altra, come un normalissimo file di testo.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: [Risolto] condizione macro

Messaggio da Alelon »

Sei stato chiarissimo
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: condizione macro

Messaggio da unlucky83 »

Alelon ha scritto:Mi avete abbandonato :) :) :) :) :) :) :) :)
Devi avere un pò di pazienza e cercare di non creare confusione. Ho notato che hai aperto un'altra discussione. Capisco l'ansia di voler risolvere in fretta il tuo problema, ma non è che creando altre discussioni analoghe acceleri il processo...personalmente ho avuto una giornata piena e mi sono potuto collegare al pc da ieri solamente oggi alle 21:00.
Come ti ha fatto notare @patel, è un atteggiamento che scoraggia il dialogo, quindi cortesemente cerca di seguire questi consigli e altri :D
Siccome è chiaro che non sei ferrato nell'utilizzo delle macro, cerchiamo di rispettare semplici regole di comunicazione così ci capiamo senza troppi problemi :super:

Con questo spirito rispondo a questo tuo commento
Alelon ha scritto:Domani la proverò ora non ho il pc.
Quindi la macro non si attiva se la D14 è piena/scritta??
Grazie
Sarò ripetitivo ma il concetto deve essere chiaro: la macro viene eseguita, ma "guarda" il contenuto di D14, "vedendo" che è piena "non fa più nulla", tranne che visualizzare un messaggio che "ho scelto io di mettere" ma che può essere tolto tranquillamente,poi si arresta.

Ti evidenzio in rosso il codice che viene eseguito quando D14 è pieno
Sub IncrementaSalva
Dim Doc as object, Sheet as object
Doc = thiscomponent
Sheet = Doc.Sheets(0)
oCella=Sheet.getCellRangeByName("D14")
If isEmpty(oCella) then
Sheet.getCellRangeByName("H3").Value =Sheet.getCellRangeByName("H3").Value +1
Doc.store()
Else
'trasforma in commento questo comando per non visualizzare il messaggio
msgbox "macro non esegue nulla."&chr(13)&"Trasforma in commento il comando presente nel codice responsabile di questo messaggio"
End if
End Sub
Ora ti evidenzio il codice che verrà eseguito quando D14 è vuoto
Sub IncrementaSalva
Dim Doc as object, Sheet as object
Doc = thiscomponent
Sheet = Doc.Sheets(0)
oCella=Sheet.getCellRangeByName("D14")
If isEmpty(oCella) then
Sheet.getCellRangeByName("H3").Value =Sheet.getCellRangeByName("H3").Value +1
Doc.store()
Else
'trasforma in commento questo comando per non visualizzare il messaggio
msgbox "macro non esegue nulla."&chr(13)&"Trasforma in commento il comando presente nel codice responsabile di questo messaggio"
End if
End Sub
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: [Risolto] condizione macro

Messaggio da Alelon »

Non so come ringraziarvi tutti per la pazienza che avete avuto con me.
Vi chiedo scusa se ho creato qualche casino.
Grazie ancora
OpenOffice 4.1.13
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: [Risolto] condizione macro

Messaggio da Alelon »

Per chiudere correttamente l'altra discussione come devo fare? Visto che la soluzione me l'avete data in questa di discussione?
OpenOffice 4.1.13
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: [Risolto] condizione macro

Messaggio da unlucky83 »

Visto che non c'è nulla di significativo nella discussione aperta oggi, si potrebbe addirittura eliminare del tutto. Se te non puoi eliminare la discussione che hai aperto (non ricordo se sia possibile per un utente eliminare una discussione da lui aperta agendo sul primo messaggio), basta chiedere a @charlie che è l'amministratore del forum.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: [Risolto] condizione macro

Messaggio da unlucky83 »

Allegato nuovo file con correzione. "isEmpty" abbandonato per un più affidabile oCella.String=""
La macro presente nel file controlla la cella D14 che dovrebbe essere vuota nel file in cui la macro deve incrementare la numerazione di D7,
D14 vuota, allora D7 incrementa; D14 occupata da qualcosa, allora D7 rimane invariata.
Allegati
Esempio.ods
(15.25 KiB) Scaricato 65 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Alelon
Messaggi: 244
Iscritto il: venerdì 12 novembre 2021, 19:46

Re: [Risolto] condizione macro

Messaggio da Alelon »

Perfetto.
Testato,funziona.
OpenOffice 4.1.13
Rispondi