Chiarezza su Sub o function



  • Chiarezza su Sub o function
    di Lisa B. (utente non iscritto) data: 29/01/2015 08:51:07

    Se ho capito giusto, sostanzialmente le sub vengono eseguite con un comando, mentre le function sono sempre attive. Dico bene?
    Esite altro oltre a queste due tipologie di codici?
    Esiste un comando per bloccare le function? Meglio ancora esiste la possibilità di bloccare solo determinate function e lasciarne attive altre? E una volta bloccate esiste la possibilità di riattivarle?

    Scusatele domande ma questo mondo mi intriga.



  • di lepat (utente non iscritto) data: 29/01/2015 09:37:45

    le function devono essere chiamate anch'esse, forse ti confondi con le UDF User Defined Function che puoi usare direttamente nel foglio come se fossero normali formule. Mi sembrava che Scossa fosse stato chiaro.



  • di Lisa B. (utente non iscritto) data: 29/01/2015 09:50:29

    Vado a rileggere x bene, forse mi sono persa qualcosa. Sorry



  • di Vecchio Frac data: 29/01/2015 21:34:00

    Lisa:" Esiste altro oltre a queste due tipologie di codici? "
    ---> Sub e Function non sono tipologie di codice. Sono codice e basta. Il codice è fatto da istruzioni; parole chiave; direttive; variabili; costanti. Il codice è strutturato in modo che viene poi processato dal compilatore e interpretato dal motore di script per "fare qualcosa". La famiglia Office espone VBA che è un parente povero di Visual Basic (sostanzialmente fin a VB6, perchè poi è subentrato .Net ma con esso VBA ha poco a che fare).
    Consegue che il modo in cui è strutturato VBA ricalca quello del fratello maggiore VB6: perciò anche in VBA trovi ad esempio classi, maschere e oggetti.

    Lisa: "Esiste un comando per bloccare le function? "
    ---> La domanda non ha senso. Il codice esiste ed è disponibile, viene utilizzato quando serve (se viene chiamato da altro codice o nel foglio se trattasi di function pubblica in un modulo come già è stato detto). Occhio alla parola "pubblica": se infili una function in un foglio o dichiari la function come Private, essa non è visibile nel foglio e neanche agli altri moduli.

    Lisa: "Meglio ancora esiste la possibilità di bloccare solo determinate function e lasciarne attive altre? "
    ---> Possibile con l'uso della parola riservata Private. Ma la function esiste e non è realmente "bloccata". A meno che tu non infili un Exit Function subito dopo la sua firma o a commentarla per intero... il che equivale a non scriverla affatto :) "Commentare" una linea di codice significa farla precedere dalla parola riservata Rem (o remark) oppure dall'apostrofo: '
    In tal modo le linee di codice "commentate" non vengono eseguite. Possibilità utilissima per descrivere il funzionamento del proprio codice (soprattutto se lo passi ad altri o se passano mesi e lo vuoi modificare) particolarmente nei punti critici.

    Lisa: "E una volta bloccate esiste la possibilità di riattivarle? "
    ---> Usa un ragionamento a contrario rispetto alle affermazioni precedenti.





  • di Lisa B. (utente non iscritto) data: 30/01/2015 20:35:11

    Solo.ora mi sono accora della tua risposta.

    La domanda dove chiedo se è possibile disattivare e riattivare le macro è legata al fatto che ho notato una rilevante differenza di utilizzo del foglio se apro il file con le macro disattivate.

    Se quest'ultime sono attive e modifico dei dati, parte un calcolo a percentuale e sino a quando non appare la dicitura pronto non posso più operare.
    Al contrario, se attivo il file con le macro disattive, la velocità di modifica del foglio è immediata ma non vanno le parti interessate dalle macro.

    Ecco che è sorto il pensiero se era possibile disattivare e riattivare le macro senza dover riaprire il file ogni volta.

    Meglio ancora se fosse possibile disattivarne solo alcune.



  • di lepat (utente non iscritto) data: 30/01/2015 20:54:56

    se utilizzi molte UDF potresti impostare disabilitare il ricalcolo automatico, fare le modifiche e premere F9 alla fine



  • di Lisa B. (utente non iscritto) data: 30/01/2015 22:02:28

    E come faccio per fare ciò?



  • di lepat (utente non iscritto) data: 31/01/2015 10:21:00

    Menu File, opzioni, Formule, Spunta il calcolo manuale
    in queste condizioni le formule non vengono calcolate fino a che premi il tasto F9



  • di Vecchio Frac data: 31/01/2015 10:42:43

    cit. "Meglio ancora se fosse possibile disattivarne solo alcune."
    ---> Non credo sia possibile. Comunque le funzioni definite dall'utente sono .Volatile per default perciò vengono calcolate solo quando si modificano le variabili di input o quando si forza il ricalcolo.

    In Excel 2003: Stumenti >> Opzioni >> Calcolo.
    Poi è come dice lepat (e puoi anche forzare il ricalcolo al salvataggio).





  • di Lisa B. (utente non iscritto) data: 31/01/2015 19:50:35

    Con il registratore ho realizzato due macro... La prima mi mette in manuale il ricalcolo, la seconda in automatico. Ora è decisamente più "lavorabile"