Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89

    dosomething nelle macro di excel

    ciao a tutti !!!
    vi espondo subito il mio problema.. ho creato nel vba di excel una piccola macro che ogni tot secondi esegue un comando e controlla il valore della differenza tra due celle, se questa supera un certo valore fornisce un messaggio.
    ho usato un comando "DoSomething" (che sinceramente non so molto come funzioni.. in pratica ho fatto quasi un copia e incolla aggiornando qualche parametro e cambiando qualche cosa da una risposta che mi avevano mandato sempre su questo forum ad un'altro post)

    il problema è che quando attivo il timer (faccio attivare lo script con un tasto nel foglio di lavoro) fa il primo controllo, e le successive volte mi da errore.. dice--> Rilevato nome univoco: DoSomething
    vi posto il codice completo che ho inserito per essere più chiaro.. grazie a tutti già in anticipo !!!


    codice:
    Public TimeRun As Double
    Public Sub StartMyTimer()
        TimeRun = Now + TimeSerial(0, 0, 1)
        Application.OnTime EarliestTime:=TimeRun, Procedure:="Dosomething", _
        Schedule:=True
    End Sub
    Public Sub Dosomething()
    
    totale = Range("B4").Value
    ultimo = Range("B3").Value
    differenza = totale - ultimo
    If differenza >= 20 Then
    MsgBox "esegui manutenzione"
    Range("B3").Value = totale
    End If
    
    StartMyTimer
    End Sub

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Sinceramente ho riprovato il codice che hai postato è funziona correttamente, aggiungendo ovviamente:

    codice:
    Private Sub CommandButton1_Click()
    StartMyTimer
    End Sub
    nel Foglio1
    Manca qualcos'altro che non hai detto.
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    no, nulla da fare... io non avevo messo:
    codice:
    Private Sub CommandButton1_Click()
    ma anche adesso che l'ho messo non vuole funzionare...
    se volete di vedere di persona il problema posto il file di excel su qualche servizio di hosting... ma lo devo fare domani perchè il file cel'ho in ufficio.. XD
    non so + dove sbattere la testa...
    comunque vi posto il codice come si presenta adesso:
    codice:
    Public TimeRun As Double
    
    Public Sub StartMyTimer()
        TimeRun = Now + TimeSerial(0, 0, 1)
        Application.OnTime EarliestTime:=TimeRun, Procedure:="DoSomething", _
        Schedule:=True
    End Sub
    
    Public Sub DoSomething()
    
    totale = Range("B4").Value
    ultimo = Range("B3").Value
    differenza = totale - ultimo
    If differenza >= 20 Then
    MsgBox "esegui manutenzione"
    Range("B3").Value = totale
    End If
    End Sub
    Private Sub CommandButton1_Click()
    StartMyTimer
    End Sub

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    NCS (non ci siamo). Il timer e la sua sub devo risiedere in un modulo, non nel foglio.
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    quindi dovrei dividere il codice? una parte in un modulo e l'altra parte ne foglio?
    e se mettessi tutti e due i codici in due moduli separati?

    quello che non capisco bene e come faccia a poter eseguire una sub in un modulo diverso...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Nel Foglio c'è l'evento del pulsante che richiama lo StartMyTimer e quello non lo puoi mettere da un'altra parte, in un modulo invece c'è il restante codice.

    codice:
    Public TimeRun As Double
    Public Sub StartMyTimer()
        TimeRun = Now + TimeSerial(0, 0, 1)
        Application.OnTime EarliestTime:=TimeRun, Procedure:="Dosomething", _
        Schedule:=True
    End Sub
    
    Public Sub Dosomething()
    
    totale = Range("B4").Value
    ultimo = Range("B3").Value
    differenza = totale - ultimo
    If differenza >= 20 Then
    MsgBox "esegui manutenzione"
    Range("B3").Value = totale
    End If
    
    StartMyTimer
    End Sub
    quello che non capisco bene e come faccia a poter eseguire una sub in un modulo diverso.
    I moduli servono proprio a condividere del codice.
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    ah forse ho capito... nel foglio metto:

    codice:
    Private Sub CommandButton1_Click()
    StartMyTimer
    End Sub
    e invece nel modulo metto:

    codice:
    Public TimeRun As Double
    Public Sub StartMyTimer()
        TimeRun = Now + TimeSerial(0, 0, 1)
        Application.OnTime EarliestTime:=TimeRun, Procedure:="Dosomething", _
        Schedule:=True
    End Sub
    
    Public Sub Dosomething()
    
    totale = Range("B4").Value
    ultimo = Range("B3").Value
    differenza = totale - ultimo
    If differenza >= 20 Then
    MsgBox "esegui manutenzione"
    Range("B3").Value = totale
    End If
    
    StartMyTimer
    End Sub
    giusto? ci ho azzeccato?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Esatto.
    Sbagliare è umano, perseverare è diabolico.

  9. #9
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    ok thanks... domani in ufficio provo a vedere se funziona e poi ti faccio sapere

  10. #10
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    nulla da fare... ho messo i codici come da sopra, provo a compilare e mi dice:

    Rilevato nome non univoco: StartMyTimer

    io a questo punto ci capisco abbastanza poco... magari salto qualche passaggio...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.