Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #20426 Score: 0 | Risposta

    ABRAMO48
    Partecipante
      1 pt

      Buongiorno,

      sfruculiando nel web ho trovato questo:

      "in questa macro, se nella cella A1 c'è il valore 1 inserisce in B1 un orologio che segna l'avanzamento dei secondi.
      Ora è molto grezza: si interrompe in modo brusco quando inserisci 0 in A1, ma il concetto è quello e si può affinare"

      Private Sub Orario()
      While Range("A1").Value = 1
                  Range("B1") = Now
              DoEvents
      Wend
      End Sub

      seguito da questo:

      "un piccolo affinamento della macro potrebbe consistere nell'abbinarla ad un evento worksheet:"

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      CheckArea = "A2:E100"  '<< da estendere a volontà
      If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
      Call Orario
      End If
      End Sub

      questo modo permette in ogni momento di lavorare sul foglio, come modificare le celle o eseguire qualsiasi macro. Durante queste operazioni il timer si ferma ma poi riparte da sola fintanto che in A1 c'è il valore 1 e che selezioni una cella nel range.

      Allora, sono a chiedere:

      1) cosa fa esattamente la funzione "DoEvents"? L'ho intuito ma vorrei avere le idee più chiare, ovvero:

      2) eseguendo la prima macro cosa succede oltre a far girare il tempo nella cella B1

      3) Come si può lanciare l'esecuzione della seconda macro?

      4) cos'è un "evento worksheet"?

      5) A cosa serve la funzione "Intersect"?

      6) eseguendo questa seconda macro (che poi esegue la call della prima) cosa cambia rispetto alla prima?

      Grazie carissimi.

      (P.S. ho esagerato con le domande? ... forse dovevo spezzarle in diverse discussioni?)

       

       

       

       

      #20427 Score: 0 | Risposta

      Luca73
      Partecipante
        58 pts

        Ciao

        Come prima cosa ti direi che esite un help delle funzioni e comandi VBA così come un'infinità di siti e forum. Cosultali...

        Come seconda cosa tti dico che se 

        'ho intuito ma vorrei avere le idee più chiare

        Spiegaci cosa hai capito...

        Come terza cosa ti dico: fai prove, testa,....

        Detto cio:

        1) Come vedi la macro orario è un ciclo senza uscite ovvero se la lanciassi continuerebbe a girare in eterno e senza do event excel non farebbe null'altro nel mentre che non aspettare la fine della macro. L'istruzione Do event fa sì che la macro continui a girare ma excel accetti altri comandi.

        Prova a togliere il do event e vedi cosa succede. (CTRL+Pausa  si usa per fermare una macro)

        2) La macro Orario legge il valore di A1 e se vale 1 allora scrive l'orario attuale in B1 e ricomincia.

        3 e 4) la seconda macro è una macro che viene lanciata in automatico all'evento "SelectionChange" ovvero quando si cambia la selezione del foglio in cui è registrata. Esistono diversi eventi che vengono intercettati e possono far partire macro. Non esiste un evento worksheet benì un evento worksheet.selectionchange

        5) per questo basta pigiare F1 (tasto funzione F1) sulla parola e ti apre l'help. Intersect genera un range che è l'intersezione ovvero la sovrapposizione di più range. Genera Nothing se i range dati non si intersecano.

        6) la seconda macro semplicemente lancia la prima macro se cambi il range nel foglio e se la cella target (quella di arrivo dopo lo spostamento di selezione) è all'interno della CheckArea 

        Ciao Luca

        #20430 Score: 0 | Risposta

        ABRAMO48
        Partecipante
          1 pt

          Grazie Luca,

          certo avevo intuito che la DoEvents servisse a questo, e, mentre girava "orario" vedevo che potevo selezionare altre celle, ma se provo ad inserire un valore in una cella mi da questo errore:

          Errore

          poi come vedi sto lavorando sotto mac os e non trovo il tasto "pausa" (cercato indicazioni sul web ma non l'avrei trovato, per ora ...) sai tu dirmi come fare per fermare una macro sotto mac?

          Grazie, intanto mi studio il resto della tua risposta ...

          #20454 Score: 0 | Risposta

          Luca73
          Partecipante
            58 pts

            Ciao Non uso Mac Perciò non lo so. 

            Per il resto ho fatto alcune prove e a  me non dà errori.

             

          Login Registrati
          Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
          Rispondi a: Ora in tempo reale
          Gli allegati sono permessi solo ad utenti REGISTRATI
          Le tue informazioni: