Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VBA/EXCEL] - Configurazione parametri grafico dinamico

    Ciao a tutti,

    qui di seguito posto il codice di una macro che ho registrato per la modifiche dell'asse delle ascisse di un grafico che ho creato, grafico che si aggiorna automaticamente al modificarsi della base di dati su cui è costruito.

    Il prametro che vorrei modificare di volta in volta è il limite minimo (minimumscale) e massimo (maximumscale).
    avevo pensato di riservare due celle sul foglio di lavoro nelle quali dovesse essere scritta in una la data iniziale (limite minimo) e nell'altra quella finale (limite massimo) e poi lanciando la macro, il programma adeguasse automaticamente il grafico con i nuovi valori dei limiti di scala.
    Però vba converte la data in formato numerico ed io non so cosa metter dopo l'= per far capire a vba che deve andare a prendere i valori che di volta in volta sono inseriti nelle due celle sul foglio di lavoro.

    come potrei fare?

    grazie a tutti per l'aiuto.

    Marco





    --------------

    Sub ModificaGrafico()
    ActiveSheet.ChartObjects("Grafico 2").Activate
    ActiveChart.Axes(xlCategory).MinimumScale = 38992
    ActiveChart.Axes(xlCategory).MaximumScale = 39349
    ActiveChart.Axes(xlCategory).BaseUnit = xlDays
    ActiveChart.Axes(xlCategory).MajorUnitScale = xlDays
    ActiveChart.Axes(xlCategory).MinorUnitScale = xlDays
    ActiveChart.Axes(xlCategory).MajorUnit = 7
    ActiveChart.Axes(xlCategory).MinorUnit = 7
    End Sub

  2. #2

    Re: [VBA/EXCEL] - Configurazione parametri grafico dinamico

    Originariamente inviato da legatoalfuturo
    ...il parametro che vorrei modificare di volta in volta è il limite minimo (minimumscale) e massimo (maximumscale).
    avevo pensato di riservare due celle sul foglio di lavoro nelle quali dovesse essere scritta in una la data iniziale (limite minimo) e nell'altra quella finale (limite massimo) e poi lanciando la macro, il programma adeguasse automaticamente il grafico con i nuovi valori dei limiti di scala.
    Però vba converte la data in formato numerico ed io non so cosa metter dopo l'= per far capire a vba che deve andare a prendere i valori che di volta in volta sono inseriti nelle due celle sul foglio di lavoro...
    Ciao !

    Se hai una cella in formato data, per convertire al valore numerico basta:
    = CLng(Cells(r, c))
    ovvero: converti a Long il valore della cella riga r, colonna c.

    Dovrebbe essere sufficiente inserire quell'espressione al posto dei valori assoluti nel tuo codice (38992 e 39349), che dovrebbero rappresentare le due date nel formato "interno".

    (Ovviamente inserirai al posto di [r, c] le coordinate [riga, colonna] delle due celle da cui prendere le due date...)

    Spero possa esserti utile, ciao !
    IceCube_HT (VB6 fan Club)

  3. #3
    Ciao ICE!!!!

    Grazie infinite per il tuo aiuto.
    Lunedì mattina al lavoro, metterò immediatamente in pratica il tuo suggerimento. Ti farò sapere

    Ciao

  4. #4
    Ciao Ice,

    purtroppo ho seguito il tuo consiglio ma la macro modifica il grafico in maniera errata.
    In pratica, lascia l'impostazione del MINIMUMSCALE su "Automatico" e imposta il MAXIMUMSCALE su fisso ma ponendolo sempre e comunque uguale a 0-gen-00.
    In pratica esce fuori un grafico con un solo valore in ascissa e quindi non esiste grafico.

    Nella macro ho impostato le cose come hai detto tu. Ho provato sia con CLng(Cells(13,26)) [esempio], sia con solo Cells(13,26). Nei due casi era differente la formattazione delle celle di origine. Nel primo caso era come data, nel secondo come Generale.

    Cosa ho sbagliato?

  5. #5
    Originariamente inviato da legatoalfuturo
    Ciao Ice,

    purtroppo ho seguito il tuo consiglio ma la macro modifica il grafico in maniera errata.
    In pratica, lascia l'impostazione del MINIMUMSCALE su "Automatico" e imposta il MAXIMUMSCALE su fisso ma ponendolo sempre e comunque uguale a 0-gen-00.
    In pratica esce fuori un grafico con un solo valore in ascissa e quindi non esiste grafico.

    Nella macro ho impostato le cose come hai detto tu. Ho provato sia con CLng(Cells(13,26)) [esempio], sia con solo Cells(13,26). Nei due casi era differente la formattazione delle celle di origine. Nel primo caso era come data, nel secondo come Generale.

    Cosa ho sbagliato?
    Non so cosa hai sbagliato.. prova a postare il nuovo codice della Sub ModificaGrafico, e vediamo...

    Cosa intendi esattamente per:
    "lascia l'impostazione del MINIMUMSCALE su "Automatico" e imposta il MAXIMUMSCALE su fisso" ?
    IceCube_HT (VB6 fan Club)

  6. #6

    [vba/excel] Codice Vba Che Non Funziona


    Ciao a tutti,

    Ho creato una tabella di archiviazione dati su un foglio, nei tre fogli successivi ho posto dei grafici, uno per foglio con dei controlli che permettono a due macro di modificare l'estensione dell'asse delle ascisse e di ripristinare il grafico "totale.

    Di seguito il listato di una della macro:

    Sub ModificaGraficoAnanas()
    ActiveSheet.ChartObjects("Grafico Ananas").Activate
    ActiveChart.Axes(xlCategory).Select
    ActiveChart.Axes(xlCategory).MinimumScale = Cells(25, 13)
    ActiveChart.Axes(xlCategory).MaximumScale = Cells(26, 13)
    ActiveChart.Axes(xlCategory).MajorUnit = 7
    ActiveChart.Axes(xlCategory).MajorUnitScale = xlDays
    ActiveChart.Axes(xlCategory).MinorUnit = 7
    ActiveChart.Axes(xlCategory).MinorUnitScale = xlDays
    ActiveChart.Axes(xlCategory).BaseUnit = xlDays
    End Sub

    Naturalmente ho assegnato un nome speciale a ciascun grafico.

    L'applicazione è stata creata con Excel 2007 ma salvando il file in formato compatibilità con Excel 2003.
    A questo punto, se riapro il file da Excel 2007, tutto funziona alla perfezione. Se invece viene aperto da una macchina che monta Excel 2003, quando viene lanciata una macro di modifica del grafico, viene restituito il seguente messaggio di errore, e premendo Debug viene evidenziata la quarta riga dall'alto nel listato che ho postato sopra.

    ----------------
    Runtime error 1004
    Metodo Cells dell'oggetto _Global non riuscito
    ----------------

    E' un puro problema di compatibilità? Come posso risolvere questo problema?

    Grazie per l'aiuto

    Legatoalfuturo

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459

    Moderazione

    Ho unito le discussioni aperte in quanto si sta affrontando la stessa problematica.

    In generale, comunque, quando si aprono nuove discussioni, si dovrebbe usare un titolo più significativo di quello adottato ("codice che non funziona").

    E' possibile proseguire la discussione qui di seguito.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Non sono daccordo con l'unificazione dei post che hai appena compiuto.

    Il post che avevo appena inserito nel forum è molto specifico e non ha abbastanza visibilità se posizionato all'interno di quello precedente, il quale è ben più generale.

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459

    Moderazione

    Originariamente inviato da legatoalfuturo
    Il post che avevo appena inserito nel forum è molto specifico
    Infatti è una precisazione al problema che avevi già introdotto nella precedente discussione, a cui è stato unito.

    Originariamente inviato da legatoalfuturo
    e non ha abbastanza visibilità se posizionato all'interno di quello precedente, il quale è ben più generale.
    Il fine non giustifica il mezzo. Se ritieni che 10 discussioni potrebbero dare la giusta visibilità al tuo problema, non sei comunque autorizzato ad inserirle, nel rispetto degli altri utenti.

    Inoltre, la visibilità è attribuita dalla posizione della discussione (che è tra le prime elencate, quindi decisamente visibile).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    "Il fine non giustifica il mezzo" è un commento che non accetto.
    Puoi anche fare il moderatore ma non puoi pretendere di spacciare per logicamente inoppugnabili scelte che possono anche essere contestabili.

    Il commento che ho postato prima era assolutamente rispettoso. Era puramente una critica civile.

    Non ammetto che mi venga detto nè da te, nè da chiunque altro in questo Forum, che io utilizzi espedienti "paralleli" per ricevere risposte ad un mio quesito.

    Ho solo adottato un criterio di specificità. Tutto qui.

    Chiedo scusa se ho intasato il Forum, con un post aggiuntivo sullo stesso argomento. Non ne avevo intravisto la così profonda pericolosità.

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.