Ciao a tutti ,
eccomi qui, nuovamente a scrivervi per capire o cercare di capire il funzionamento di questo nuovo metodo di programmazione rispetto al VBA.
Per quello che ho potuto capire e che per ogni minima cosa, bisogna scrivere le variabili se no non esegue nulla.
Detto ciò arriviamo al dunque.
Ho questo "santo" file che dopo averlo aperto, gli dico di eseguire una determinata macro tramite il pulsante "Menù" situato su ogni singolo foglio e di rimando mi dice che non è stata impostata una variabile, evidenziandomi la voce "Nascondi_Scheda1"; stessa cosa mi succede se dal foglio denominato "menù" gli chiedo di pulire i fogli della Scheda1.
La cosa al quanto strana e che non riesco a capire e il perchè una volta che lui ha tutti i fogli visibili per effettuare la pulizia; vado sul foglio "Sc1Riga1" manualmente; ritorno sul foglio "Menù" e gli dico di eseguire automaticamente la macro associata al pulsante "Cancella scheda", esso la esegue senza alcun errore; stessa cosa succede se dalla Scheda1 (nonostante abbia alcuni fogli nascosti), gli chiedo di ritornare al menù principale.
Ogni modulo in basic ha le variabile che servono per far eseguire le macro che lo compongono, quindi in teoria, prima di eseguire una macro situata in un determinato modulo, dovrebbe prima leggere le variabili associate ad esso ma sembra che non lo faccia o che gli manchi qualcosa.
Mi potreste aiutare a capire il perchè di questo comportamento?
Vi ringrazio a tutti quanti per l'aiuto.
File aperto errore esecuzione macro, in seguito non più.
File aperto errore esecuzione macro, in seguito non più.
- Allegati
-
- Test.ods
- (131.23 KiB) Scaricato 76 volte
LibreOffice 7 su Windows 10
Re: File aperto errore esecuzione macro, in seguito non più.
Ciao a tutti,
non c'è nessuno che sappia il perchè di questo comportamento anomalo?
non c'è nessuno che sappia il perchè di questo comportamento anomalo?
LibreOffice 7 su Windows 10
Re: File aperto errore esecuzione macro, in seguito non più.
Non vedo alcuna sub che si chiami Nascondi_Scheda1
Inoltre non capisco questa tua affermazione "bisogna scrivere le variabili se no non esegue nulla."
Inoltre non capisco questa tua affermazione "bisogna scrivere le variabili se no non esegue nulla."
-------------------
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: File aperto errore esecuzione macro, in seguito non più.
Grazie Patel per aver risposto al mio messaggio.patel ha scritto:Non vedo alcuna sub che si chiami Nascondi_Scheda1
Inoltre non capisco questa tua affermazione "bisogna scrivere le variabili se no non esegue nulla."
Per quanto riguarda la sub "Nascondi_Scheda1" la trovi nella cartella "Schede/Scheda1/Sub Nascondi_Scheda1", ovviamente richiamando il programma Basic tramite Calc.
In merito alla mia affermazione sopra citata, intendevo che se su ogni modulo non si vanno a scrivere le classiche "variabili" (es.dim Document as object, Dim LastUsedColumn As Variant), mi sono ritrovato diverse volte dove la macro stessa mi informava che gli mancava qualcosa e quindi non finiva di eseguire la macro.
Per caso anche a te succede che dia il messaggio di "errore runtime Basic, variabile non definita" cliccando sul pulsante "cancella scheda" presente sul foglio "Elenco" della 1° scheda?
LibreOffice 7 su Windows 10
Re: File aperto errore esecuzione macro, in seguito non più.
Dimensionare (non scrivere) le variabili è sempre raccomandato anche se non indispensabile, aiuta nel caso di errori di battitura e ottimizza la gestione delle variabili in memoria. Io di solito uso un solo modulo in cui metto tutte le sub, rende più facile la gestione ed il controllo da parte di altri nel caso tu abbia bisogno di aiuto.
-------------------
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: File aperto errore esecuzione macro, in seguito non più.
.
Allego il tuo file parzialmente reimpostato a mio modo.
Foglio “Elenco” inizialmente visibile e non protetto.
Tutti gli altri fogli sono nascosti e protetti.
Nel foglio “Elenco” la proprietà “Nome” dei pulsanti è stata modificata in funzione del nome del foglio che gestiranno.
La macro attivata dai vari pulsanti “Cancella Scheda” è unica e di tipo “Evento” e si limita solo a cancellare i dati presenti nelle celle sbloccate della scheda interessata).
La macro attivata dai vari pulsanti “Scheda” è unica e di tipo “Evento”.
… similmente per quanto riguarda il pulsante MENU' delle otto schede (SchedaNr).
Tutto il resto non è stato modificato.
Per gestire il tutto ho:
- eseguito le modifiche con LibreOffice;
- dichiarato “Pubblica” la variabile stringa “NomeFoglio”;
- utilizzato tre macro.
Il codice è il seguente ed è nel “ModuloLucky63” aggiunto alla Libreria “Standard” del file.
.
Allego il tuo file parzialmente reimpostato a mio modo.
Foglio “Elenco” inizialmente visibile e non protetto.
Tutti gli altri fogli sono nascosti e protetti.
Nel foglio “Elenco” la proprietà “Nome” dei pulsanti è stata modificata in funzione del nome del foglio che gestiranno.
La macro attivata dai vari pulsanti “Cancella Scheda” è unica e di tipo “Evento” e si limita solo a cancellare i dati presenti nelle celle sbloccate della scheda interessata).
La macro attivata dai vari pulsanti “Scheda” è unica e di tipo “Evento”.
… similmente per quanto riguarda il pulsante MENU' delle otto schede (SchedaNr).
Tutto il resto non è stato modificato.
Per gestire il tutto ho:
- eseguito le modifiche con LibreOffice;
- dichiarato “Pubblica” la variabile stringa “NomeFoglio”;
- utilizzato tre macro.
Il codice è il seguente ed è nel “ModuloLucky63” aggiunto alla Libreria “Standard” del file.
Codice: Seleziona tutto
Rem Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=11286
Public NomePulsante As String 'Variabile valida x tutti i moduli.
Sub ScegliFoglioInBaseAlNomeDelPulsanteCliccato(Evento)
Rem Rilevo il nome del pulsante cliccato
NomePulsante = Evento.Source.Model.Name
Call MostraFoglioInteressato_e_NascondiFoglioAttivo
End Sub
Sub MostraFoglioInteressato_e_NascondiFoglioAttivo
Doc = ThisComponent
Rem Visualizzo il foglio interessato
Doc.Sheets.GetByName(NomePulsante).IsVisible = True
Rem Nascondo il foglio attivo
Doc.CurrentController.ActiveSheet.IsVisible = False
End Sub
Sub CancellaCelleSbloccateDellaScheda(Evento)
Rem Rilevo il nome del pulsante cliccato
NomePulsante = Evento.Source.Model.Name
Doc = ThisComponent
Rem Visualizzo la scheda interessata
Doc.Sheets.GetByName(NomePulsante).IsVisible = True
Rem Nascondo il foglio attivo
Doc.CurrentController.ActiveSheet.IsVisible = False
Rem Nuovo foglio attivo = al foglio visualizzato in precedenza
FoglioAttivo = Doc.CurrentController.ActiveSheet
Rem Riporto a stringa nulla (Cancello) le celle non protette nel range della scheda
For Riga = 0 to 50
For Colonna = 0 to 15
Cella = FoglioAttivo.GetCellByPosition(Colonna,Riga)
Cella.string = ""
Next
Next
End Sub
- Allegati
-
- Test - Macro - GestioneSchedeCinemaEuropa.ods
- (131.82 KiB) Scaricato 68 volte