Errori 9 e 91



  • Errori 9 e 91
    di Pigir46 data: 10/12/2016 18:18:49

    Salve, Ho pochissima esperienza in campo VBA e mentre stavo spacciugando tra i vari codici di una macro che volevo creare sono incappato in un problema, e non riesco a risolverlo.

    La macro, per come l'ho impostata, mi ricopia dei dati (aggiornati ogni 15 minuti da un sito web nelle celle in cui ho selezionato i range) e, teoricamente, mi dovrebbe aggiornare un grafico (Me lo dovrebbe chiudere e riaprire). Ho aggiunto un contatore per sistemarmi i dati copiati su 3 colonne.

    Il debug mi mostra problemi sulla riga ActiveChart.SetSourceData ma non so dove sto sbagliando e cosa correggere. Qualche idea?

    (Ho messo nel titolo i codici errore che riscontro se provo a modificare in qualche modo la stringa dove mi presenta l'errore, per così come l'ho impostato mi segnala l'errore 9)
     
    Sub Gino()
    Dim j As Integer
    
    Cells(6, 14).Value = Cells(6, 14).Value + 1
    j = Cells(6, 14).Value
    
        Range("C86").Select
        Selection.Copy
        ActiveSheet.Cells(j, 17).Select
        ActiveSheet.Paste
        
        Range("C132").Select
        Selection.Copy
        ActiveSheet.Cells(j, 18).Select
        ActiveSheet.Paste
        
        Range("E86").Select
        Selection.Copy
        ActiveSheet.Cells(j, 16).Select
        ActiveSheet.Paste
    
    If ActiveSheet.ChartObjects.Count = 1 Then ActiveChart.Parent.Delete
        Sheets("ReportSummary").ChartObjects("Chart 1").Activate
        ActiveChart.SetSourceData Source:=Sheets("Report").Range(Cells(2, 16), Cells(j, 18))
        ActiveChart.ChartType = xlLine
    
    Call Test
    
    
    End Sub
    
    Sub Test()
    Application.OnTime Now + TimeValue("00:00:15"), "Gino"
    
    End Sub
    



  • di alfrimpa data: 10/12/2016 18:40:03

    Ciao Pigir

    Per poter tentare di aiutarti occorrerebbe avere il tuo file (senza dati sensibili) anche per testare la macro nel tuo scenario.

    Comunque l'errore di run-time 9 "Indice non incluso nell'intervallo" sta ad indicare che la macro non riesce a trovare un qualcosa che invece, secondo il codice, ci dovrebbe essere (ad esempio il nome di un foglio o di un oggetto non esistente in cartella).

    Ma ripeto senza vedere il file sono solo supposizioni.

    Alfredo





  • di Pigir46 data: 10/12/2016 18:58:18

    Ok, dovrei essere riuscito ad allegare il file nella discussione, Grazie in anticipo!



  • di Marius44 data: 10/12/2016 22:32:55

    Ciao Pigir46
    ho fatto dei tentativi, con qualche problema, con la tua macro e, credo, che l'inghippo stia nei nomi dei Fogli e/o del Grafico. Controlla che siano digitati correttamente.
    Ho detto che la macro funziona ma ho commentato (mettendo l'apostrofo davanti) questa riga di codice:
    ' If ActiveSheet.ChartObjects.Count = 1 Then ActiveChart.Parent.Delete

    Prova e fai sapere.
    Ciao,
    Mario



  • di Pigir46 data: 11/12/2016 12:39:19

    Ciao Marius44,
    Non ho capito bene la parte dei nomi dei Fogli e/o del Grafico: come dovrei modificarli? (Proprio non so dove mettere le mani per fare i tentativi)

    E come posso sostituire questa riga di codice se da problemi?
    ' If ActiveSheet.ChartObjects.Count = 1 Then ActiveChart.Parent.Delete



  • di Marius44 data: 11/12/2016 19:13:46

    Ciao
    Nella macro ci sono queste due righe
    Sheets("ReportSummary").ChartObjects("Chart 1").Activate
    ActiveChart.SetSourceData Source:=Sheets("Report").Range(Cells(2, 16), Cells(j, 18))
    Come sai, il codice Sheets("ReportSummary") vuol significare che ci deve essere un Foglio denominato ReportSummary. Se fosse denominato Reportsummary (con la s minuscola, ad esempio) il codice non funzionerebbe. Stessa cosa per il codice Sheets("Report") e per ChartObjects("Chart 1"). Il tuo grafico si chiama proprio "Chart 1"?

    Infine la "riga commentata" vuol dire, come ti ho scritto, che mi ha creato qualche problema e, per mia comodità, ci ho messo un apostrofo davanti e così facendo la riga di codice viene saltata (io non l'ho sostituita).

    Ri...prova e fai sapere. Ciao,
    Mario



  • di Pigir46 data: 11/12/2016 19:50:33

    Ciao,
    Riguardo la roba del Sheets("") non lo sapevo (Sono ignorante in materia), ora che mi hai delucidato sulla questione ho sistemato e non mi da più l'errore. Rimane il problema del grafico, in quanto non so esattamente come si chiama (né so dove si può vederne il suo nome) dato che la macro deve crearlo da sé. (Forse devo proprio crearlo da macro ma anche in questo caso ne so poco o niente )

    Riguardo la riga di codice saltata: l'idea sarebbe di eliminare il grafico creato la prima volta in cui faccio partire la macro Gino(), pur risistemandola in un altra macro (richiamandola con "call" dalla macro Gino()) come potrei impostarla?

    Grazie ancora!
    Pier
     
    Sheets("Foglio1").ChartObjects("Chart 1").Activate
        ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range(Cells(2, 16), Cells(j, 18))
        ActiveChart.ChartType = xlLine



  • di Marius44 data: 12/12/2016 05:51:39

    Ciao
    risolto un problema, passiamo all'altro.
    Dalla tua macro non mi pare che "crei" un Grafico si limita ad "attivarlo".
    Per conoscere il nome del Grafico fai così: seleziona il grafico e guarda a sinistra della barra della formula. Li c'è il nome del grafico.

    Ciao,
    Mario



  • di Pigir46 data: 12/12/2016 09:50:36

    Ciao,
    Ok, quindi ho sbagliato proprio la stringa di codice che ho inserito: l'intento era quello di creare il grafico da macro (non attivarlo in quanto non esiste ancora) date le 3 colonne di dati variabili (con variabili intendo che si aggiunge una riga ogni loop della macro, per come l'ho impostata). Purtroppo rimango ignorante sulla questione "fai creare un grafico alla macro", come si potrebbe impostare?

    Grazie!,
    Pier



  • di Marius44 data: 12/12/2016 12:46:15

    Ciao
    scusa la franchezza: non correre se non sai camminare.
    E non è facile insegnare a camminare a qualcuno che vuole solo correre.

    Un consiglio: studia e poi ne riparliamo.
    Ciao,
    Mario