Risultati da 1 a 8 di 8

Discussione: Errore Routine troppo estesa!



  1. #1
    L'avatar di morenomax
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    bergamo
    Messaggi
    16
    Versione Office
    excel 2013
    Likes ricevuti
    0
    Likes dati
    1

    Question Errore Routine troppo estesa!

    Salve a tutti.
    Ho un problema, sto scrivendo un codice VBA dove prevedo di cambiare colore a degli oggetti e righe in base alla condizione del colore degli stessi.
    Mi spiego meglio, dati n ovali, se l'ovale 1 risulta essere rosso e l'ovale 2 risulta essere verde, allora l'orale 3,4,5...n saranno di un colore, se invece l'ovale 1 è verde e l'ovale 2 è verde gli altri ovali assumono altri colori.
    Il problema mi si verifica quando andando a scrivere il codice per l'ovale 1, più sono gli oggetti,più saranno le combinazioni che mi si vengono a creare, questo perchè poi vado a verificare se l'ovale 1 è rosso, l'ovale 2 è verde e l'ovale 3 è rosso allora fai una cosa, se l'ovale 1 è rosso, l'ovale 2 è verde e l'ovale 4 è rosso fai altro.
    Andando a scrivere un if dentro un altro if, raggiunto un certo punto mi dice che la routine è troppo estesa e non esegue più le istruzioni.
    C'è un modo più veloce e semplice per poter fare questa cosa?

    Sotto ho scritto una parte del codice per farvi capire meglio.

    Codice: 
    sub Ovale 1()
    If activesheet.shapes("Ovale 3").fill.forecolor = vbred and activesheet.shapes("Ovale 2").fill.forecolor = vbgreen then
    if activesheet.shapes("Ovale 1").fill.forecolor = vbred then
    activesheet.shapes("Ovale 1").fill.forecolor.rgb = vbgreen
    activesheet.shapes("Riga 1").line.forecolor.rgb = vbgreen
    elseif activesheet.shapes("Ovale 1").fill.forecolor = vbgreen then
    activesheet.shapes("Ovale 1").fill.forecolor.rgb = vbred
    end if
    else
    If activesheet.shapes("Ovale 3").fill.forecolor = vbgreen and activesheet.shapes("Ovale 2").fill.forecolor = vbgreen then
    if activesheet.shapes("Ovale 1").fill.forecolor = vbred then
    activesheet.shapes("Ovale 1").fill.forecolor.rgb = vbgreen
    activesheet.shapes("Riga 1").line.forecolor.rgb = vbgreen
    elseif activesheet.shapes("Ovale 1").fill.forecolor = vbgreen then
    activesheet.shapes("Ovale 1").fill.forecolor.rgb = vbred
    end if
    else
    .
    .
    .
    .
    .
    .
    ecc 
    end if
    end if
    end sub
    Praticamente la struttura che ho scritto prevede:

    If
    If
    elseif
    end if
    else
    if
    if
    elseif
    end if
    else e cosi via

    magari ho sbagliato a scrivere la struttura, anche se fino ad ora il codice ha funzionato benissimo.

    Aspetto Vostre risposte. Grazie mille

    Moreno

  2. #2
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    525
    Versione Office
    2010 - Win10
    Likes ricevuti
    63
    Likes dati
    17

    Re: Errore Routine troppo estesa!

    magari se alleghi il file si puó provare.....

  3. #3
    L'avatar di morenomax
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    bergamo
    Messaggi
    16
    Versione Office
    excel 2013
    Likes ricevuti
    0
    Likes dati
    1

    Re: Errore Routine troppo estesa!

    Era già mia intenzione farlo, lo stavo preparando.
    Il file non è completo ma è solo per far capire il ragionamento e la logica.
    Aggiungendo più variabili con questo sistema ad un certo punto mi da errore routine troppo estesa.
    File Allegati File Allegati

  4. #4
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3201
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Errore Routine troppo estesa!

    Ciao MorenoMax
    a me non dà alcun errore. Cliccando sugli ovali cambiano i colori di alcune connessioni e di qualche ovale ma funziona tutto.
    Certo sarebbe meglio conoscere la "logica" dei collegamenti per capire quale è la conseguenza se clicco su una forma ma, ripeto, per me funziona senza alcun inghippo (ho la versione 2007 di Excel).

    Ciao,
    Mario

  5. #5
    L'avatar di morenomax
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    bergamo
    Messaggi
    16
    Versione Office
    excel 2013
    Likes ricevuti
    0
    Likes dati
    1

    Re: Errore Routine troppo estesa!

    Anche a me funziona, il problema lo riscontro quando per esempio, nella sub dell'ovale 1, aggiungo altre righe di codice aumentando quindi il numero di ovali da controllare.
    Di conseguenza aggiungendo ovali, aumentano le combinazioni di colori che possono esserci, ovvero tutti gli ovali verdi, tutti gli ovali rossi, un ovale rosso e tuttu gli altri verdi, due ovali rossi e gli altri verdi e cosi via.
    Più variabili ho più saranno le combinazioni ed è li che mi da errore di routine troppo estesa.
    Nel file allegato ho inserito il codice solo per due ovali che a loro volta cambiano colore ad una riga sola, nel file originale cambiano colore ad una decina di righe quindi il codice si allunga.
    Non so se ci sono di limiti di lunghezza nello scrivere una sub, perchè se cosi non fosse penso che il problema sia dovuto al modo in cui ho scritto il codice ovvero la logica che ho presentato nei post precedenti.

  6. #6
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3201
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Errore Routine troppo estesa!

    Ciao morenomax
    quando parlo di "logica" intendo questo: a me il tuo esempio fa pensare a delle camere con degli interruttori e dei fili per accendere e spegnere le lampadine. Ovvio che se un interruttore (un ovale) e su off la linea (la Riga) a valle sarà pure off e viceversa. Se così fosse invece di tanti If ... Then si potrebbe utilizzare un ciclo For...Next denominando Ovali e Righe in modo particolare.

    Se il mio esempio è calzante sarebbe utile avere lo "schema" che vuoi realizzare e su quello lavore.

    Ciao,
    Mario

  7. #7
    L'avatar di morenomax
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    bergamo
    Messaggi
    16
    Versione Office
    excel 2013
    Likes ricevuti
    0
    Likes dati
    1

    Re: Errore Routine troppo estesa!

    Riesci a farmi un esempio sul file campione che ho inserito per illustrarmi la logica che dici tu del ciclo for...next?

  8. #8
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3201
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Errore Routine troppo estesa!

    Ciao morenomax
    allego il tuo file in cui ho aggiunto un foglio in testa al quale troverai due indirizzi che potranno esserti utili.
    Nel foglio2 ho riprodotto il tuo schema ampliandolo ed ho fatto quanto segue:
    a) nell'Editor di VBA ho inserito un Modulo
    b) ho rinominato le forme (il nome puoi darlo tu a piacere)
    c) ho inserito una macro (associata alla forma in alto a sinistra) che cambia il colore di tutte le forme e di tutte le linee
    d) ho inserito altra macro (associata alla forma 4 - quella quasi al centro prima della diramazione)
    e) nelle forme Ovale appare la dicitura ON/OFF a seconda che sia verde o rossa

    Bisogna tener presente che quando si inserisce una Shape in un foglio ad essa viene dato un numero (nell'elenco delle Shapes) che è progressivo e non tiene conto del numero che appare nella forma.

    Prova a dare uno sguardo ma, devo precisarti, che il lavoro non è affatto completo ma è solo per assecondare la tua richiesta di "logica" che chiedevi.

    Fai sapere. Ciao,
    Mario
    File Allegati File Allegati

Discussioni Simili

  1. [Risolto] Errore su routine
    Di DINO1 nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 13/12/16, 18:17
  2. Formula troppo lunga per timer
    Di angelix nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 07/12/16, 21:09
  3. Creare routine di stampe con excel
    Di Nicolabt nel forum Domande su Excel in generale
    Risposte: 0
    Ultimo Messaggio: 12/03/16, 21:57
  4. problema routine
    Di engineer nel forum Domande su Excel VBA e MACRO
    Risposte: 8
    Ultimo Messaggio: 12/03/16, 18:29
  5. Chiamata di routine o argomenti non validi
    Di Alessandro nel forum Domande su Excel VBA e MACRO
    Risposte: 6
    Ultimo Messaggio: 09/03/16, 15:24

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •