[Risolto] condizione macro
[Risolto] condizione macro
Grazie a unlucky83.
Ultima modifica di Alelon il domenica 28 novembre 2021, 14:35, modificato 2 volte in totale.
OpenOffice 4.1.13
Re: condizione macro
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
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
Re: condizione macro
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
Grazie ma non mi fa allegare il file per le dimensioni
OpenOffice 4.1.13
Re: condizione macro
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
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
Re: condizione macro
Puoi riportare il codice della macro copiando e incollando il suo testo?Alelon ha scritto:Salve . il file preventivo all'apertura abilita la macro che fa aumentare di 1 il numero progressivo e salva
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
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
Re: condizione macro
Eccovi il ile alleggerito
- Allegati
-
- Preventivo - Copia1.ods
- eccolo
- (14.34 KiB) Scaricato 68 volte
OpenOffice 4.1.13
Re: condizione macro
Ecco un esempio di come puoi procedere
- Allegati
-
- Preventivo - Copia1.ods
- (15.26 KiB) Scaricato 70 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
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
Re: condizione macro
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 è:
la macro originale che avevi allegato era invece:
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
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
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
Re: condizione macro
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
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
Re: condizione macro
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
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
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
Re: condizione macro
Potrebbe controllare la d14.
Non sono affatto pratico Per questo ti chiedo pazienza.
Non vedo il tuo allegato.
Non sono affatto pratico Per questo ti chiedo pazienza.
Non vedo il tuo allegato.
OpenOffice 4.1.13
Re: condizione macro
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
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
Re: condizione macro
tu hai scritto : C'è un motivo particolare del perchè stai usando la macro salvata nel percorso "application" e non nel percorso "document"?
che significa?
che significa?
OpenOffice 4.1.13
Re: condizione macro
L'allegato a cui mi riferivo lo trovi quiAlelon ha scritto:Potrebbe controllare la d14.
Non sono affatto pratico Per questo ti chiedo pazienza.
Non vedo il tuo allegato.
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
- 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
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
Re: [Risolto] condizione macro
Domani la proverò ora non ho il pc.
Quindi la macro non si attiva se la D14 è piena/scritta??
Grazie
Quindi la macro non si attiva se la D14 è piena/scritta??
Grazie
OpenOffice 4.1.13
Re: condizione macro
Fai attenzione a chi ti scrive. Sembra che tu hai confuso @patel con me (@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?
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) 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
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
Re: condizione macro
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.Alelon ha scritto:Mi avete abbandonato
Come ti ha fatto notare @patel, è un atteggiamento che scoraggia il dialogo, quindi cortesemente cerca di seguire questi consigli e altri
Siccome è chiaro che non sei ferrato nell'utilizzo delle macro, cerchiamo di rispettare semplici regole di comunicazione così ci capiamo senza troppi problemi
Con questo spirito rispondo a questo tuo commento
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.Alelon ha scritto:Domani la proverò ora non ho il pc.
Quindi la macro non si attiva se la D14 è piena/scritta??
Grazie
Ti evidenzio in rosso il codice che viene eseguito quando D14 è pieno
Ora ti evidenzio il codice che verrà eseguito quando D14 è vuotoSub 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
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
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
Re: [Risolto] condizione macro
Non so come ringraziarvi tutti per la pazienza che avete avuto con me.
Vi chiedo scusa se ho creato qualche casino.
Grazie ancora
Vi chiedo scusa se ho creato qualche casino.
Grazie ancora
OpenOffice 4.1.13
Re: [Risolto] condizione macro
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
Re: [Risolto] condizione macro
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
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
Re: [Risolto] condizione macro
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.
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
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