Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Discussione: Aiuto Office

  1. #11
    di niente, mi deverte giocare col vba.

    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  2. #12
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    42
    Nel fine settimana ho avuto tempo di testarlo e purtroppo il codice non funziona... o meglio funziona se il valore viene cambiato da me:

    se c'è 5 e metto 6 il colore diventa verde, se poi metto 4 diventa rosso... e così via

    ma se il colore viene cambiato dalla query web il valore ovviamente si aggiorna ma il colore non cambia.

    Qualcuno ha qualche idea da suggerire?

  3. #13
    Sembra che l'evento change non venga attivato dalla query quindi sono andato a cercare un po' in rete e sull'help di excel e ho trovato l'evento QueryTable.AfterRefresh che sembra quello giusto però non ho modo di provarlo, dovresti fare tu qualche tentativo.

    In rete se ne parla qui
    http://support.microsoft.com/kb/213187

    L'esempio che c'è nell'help è questo
    codice:
    Private Sub QueryTable_AfterRefresh(Success As Boolean)
        If Success
            ' Query completed successfully
        Else
            ' Query failed or was cancelled
        End If
    End Sub
    Quindi facendo un mix fra quello che ti ho postato prima e questo, potresti provare qualcosa del genere:

    codice:
    Private Sub QueryTable_AfterRefresh(Success As Boolean)
       If Success
    
          Set Range_Dati = Range("a1:a100")
          Set Foglio_Appoggio = Worksheets("Foglio2")
      
          Rosso = RGB(255, 70, 94)
          Giallo = RGB(255, 243, 102)
          Verde = RGB(0, 242, 61)
    
          For Each Casella In Range_Dati
             If Casella > Foglio_Appoggio.Cells(Casella.Row, Casella.Column) Then
                Casella.Interior.Color = Verde
             ElseIf Casella = Foglio_Appoggio.Cells(Casella.Row, Casella.Column) Then
                Casella.Interior.Color = Giallo
             Else
                Casella.Interior.Color = Rosso
             End If
             Foglio_Appoggio.Cells(Casella.Row, Casella.Column) = Casella
          Next
    
       End If
    End Sub
    Può darsi però che ti dia qualche errore perché non l'ho provato.

    Comunque cominciamo a vedere se facciamo un passo avanti.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  4. #14
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    42
    Grazie per il codice

    Allora ho fatto delle prove ma non succede nulla. Di errori non ne da ma non accade nulla sia quando l'aggiornamento viene fatto dalla query sia quando viene fatto manualmente.

    Non sono un esperto di VBA quindi chiedo a qualcuno del forum se in grado di darmi una mano

  5. #15
    Allora, intanto una precisazione, le query di cui parliamo sono quelle la cui procedura è descritta nel link che ti ho postato (dove c'è tutto l'elenco di punti 1, 2, 3, ... 15), vero?

    Se è così la strada dovrebbe essere quella quindi si tratta solo di capire come percorrerla.

    Comincia a fare una cosa, metti questa istruzione

    codice:
    MsgBox "evento attivato"
    come prima istruzione della Sub cioè fra la riga Private ... e la If

    e metti quest'altra

    codice:
    MsgBox "query riuscita"
    fra la If e la prima delle Set.

    Queste istruzioni, se eseguite, fanno apparire un piccolo pop-up con scritto il messaggio indicato e servono per capire se l'evento viene attivato e se la query riesce a recuperare dati.

    Praticamente, se tutto funzionasse a dovere, nel momento in cui la query viene eseguita dovrebbe partire la Sub e dovrebbe essere subito eseguito il primo msgbox e poi, se la query va bene si dovrebbe entrare nella If e si dovrebbe vedere il secondo pop-up.

    Fammi sapere che succede.

    Ah, già, non dimenticare di attivare le macro quando apri il foglio (scusa se sottolineo l'ovvio ma a volte si perde tempo per delle sciocchezze )
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #16
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    42
    Sicuramente avrò sbagliato qualcosa ma non succede niente


    Private Sub QueryTable_AfterRefresh(Success As Boolean)
    MsgBox "evento attivato"

    If Success
    MsgBox "query riuscita"
    Set Range_Dati = Range("d2:d10")
    Set Foglio_Appoggio = Worksheets("FoglioAppoggio")

    Rosso = RGB(255, 70, 94)
    Giallo = RGB(255, 243, 102)
    Verde = RGB(0, 242, 61)

    For Each Casella In Range_Dati
    If Casella > Foglio_Appoggio.Cells(Casella.Row, Casella.Column) Then
    Casella.Interior.Color = Verde
    ElseIf Casella = Foglio_Appoggio.Cells(Casella.Row, Casella.Column) Then
    Casella.Interior.Color = Giallo
    Else
    Casella.Interior.Color = Rosso
    End If
    Foglio_Appoggio.Cells(Casella.Row, Casella.Column) = Casella
    Next

    End If
    End Sub

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.