File aperto errore esecuzione macro, in seguito non più.

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

File aperto errore esecuzione macro, in seguito non più.

Messaggio da Tuoangelo »

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.
Allegati
Test.ods
(131.23 KiB) Scaricato 76 volte
LibreOffice 7 su Windows 10
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Re: File aperto errore esecuzione macro, in seguito non più.

Messaggio da Tuoangelo »

Ciao a tutti,
non c'è nessuno che sappia il perchè di questo comportamento anomalo? :( :roll:
LibreOffice 7 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: File aperto errore esecuzione macro, in seguito non più.

Messaggio da patel »

Non vedo alcuna sub che si chiami Nascondi_Scheda1
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
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Re: File aperto errore esecuzione macro, in seguito non più.

Messaggio da Tuoangelo »

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."
Grazie Patel per aver risposto al mio messaggio.
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
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: File aperto errore esecuzione macro, in seguito non più.

Messaggio da patel »

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
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2997
Iscritto il: martedì 18 maggio 2010, 17:01

Re: File aperto errore esecuzione macro, in seguito non più.

Messaggio da lucky63 »

.
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
Rispondi