Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

MACRO PER GRAFICO DINAMICO

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 19/02/13 15:31

Salve a tutti :) , ho un parziale problema con una macro inserita in un foglio di lavoro.

Descrizione di cosa fa la macro seguente : mi da la possibilità di restringere l'asse del tempo e modificare anche la scala dei valori su un grafico inserito nel foglio e che contiene molti dati, per capirci oltre 20000 per ogni serie rappresentata, dandomi la possibilità di zoomare il periodo che più interessa studiare in modo tale da avere una visuale limpida su un determinato periodo che va da A a B , come noterete ciò è possibile inserendo le coordinate nelle apposite celle descritte nella macro.

Il problema: quando inserisco le coordinate riguardanti prezzo e scala e premo il tasto invio tutto funziona correttamente per quanto riguarda il grafico denominato chart 1 , mentre non avviene nessun aggiornamento per quanto riguarda il grafico denominato chart 2

premetto che i nomi dei grafici sulla loro relativa scheda di Layout è corretto e rispecchiano quelli specificati nella macro , la macro non restituisce nessun errore , però esegue correttamente le istruzioni inserite nelle apposite celle ma solo per il Chart 1

i grafici nel foglio (stesso foglio )di lavoro sono due disposti uno accanto all' altro vedere immagine alla fine del post , se notate sul grafico inferiore lo zoom non avviene e mostra il range intero dal 1974 al 2048 mentre avrebbe dovuto restringersi come il primo.

vorrei se possibile si aggiornassero entrambi a seconda delle istruzioni inserite nelle celle di riferimento

GRAZIE MILLE PER LA VOSTRA ATTENZIONE



oggetto = worksheet ------------ routine = Change

Codice: Seleziona tutto
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address

' Chart 1

' Asse Orizzontale del Tempo

    Case "$E$2"
        ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
            .MaximumScale = Target.Value
    Case "$E$3"
        ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
            .MinimumScale = Target.Value
    Case "$E$4"
        ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
            .MajorUnit = Target.Value
   
    ' Asse Verticale di sinistra scala numerica
   
    Case "$F$2"
        ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
            .MaximumScale = Target.Value
    Case "$F$3"
        ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary). _
            MinimumScale = Target.Value
    Case "$F$4"
        ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
            .MajorUnit = Target.Value
   
   
    ' Chart 2
   
    ' Asse Orizzontale del Tempo

    Case "$E$2"
        ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
            .MaximumScale = Target.Value
    Case "$E$3"
        ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
            .MinimumScale = Target.Value
    Case "$E$4"
        ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
            .MajorUnit = Target.Value
   
    ' Asse Verticale di sinistra scala numerica
   
    Case "$F$2"
        ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
            .MaximumScale = Target.Value
    Case "$F$3"
        ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary). _
            MinimumScale = Target.Value
    Case "$F$4"
        ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
            .MajorUnit = Target.Value
   
   
   
   
    Case Else
End Select
End Sub




Immagine
Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Sponsor
 

Re: MACRO PER GRAFICO DINAMICO

Postdi Flash30005 » 19/02/13 22:22

Non vedo anomalie nell stralcio di macro che hai postato però penso che potresti ridurre i cicli della select in una unica select
es.:
' Chart 1

' Asse Orizzontale del Tempo

Case "$E$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
Case "$E$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
'etc etc

In pratica inserire la variazione dei due grafici nella stessa select
prova e fai sapere

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO PER GRAFICO DINAMICO

Postdi Anthony47 » 19/02/13 23:36

Vedi il messaggio di Flash, sopra.
Probabilmente dovresti allegare un file semireale per provare, non mi sembra veloce costruirsi un ambiente di prova analogo.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 20/02/13 14:06

Grazie mille per le vostre indicazioni Flash ed Anthony :)

Ho modificato il codice come indicato da Flash e ora funziona, si aggiornano entrambi i grafici.

Siete mitici

Alla prossima! :)
Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 25/02/13 14:59

ciao Flash ,ciao Antohny e ciao a tutti i lettori del forum.

Se posso vorrei chiedere un aiuto per un' implementazione della macro in questione

è possibile inserire una riga di codice che non contempli l'immissione di una data precedente al 01/01/1960 nella cella E3, e che in caso di inserimento in cella E2 ed E3 di dati non corrispondenti a date di calendario la macro non ritorni la finestra di errore run-time 13 Tipo non corrispondente.

Grazie mille indipendentemente dalla vostra risposta

ecco l' attuale macro.

Codice: Seleziona tutto
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address


' Asse Orizzontale del Tempo


Case "$E$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value

Case "$E$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value

Case "$E$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value


' Asse Verticale dei valori


Case "$I$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value

Case "$I$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value

Case "$I$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value

   
    Case Else
End Select
End Sub




Immagine


P.S Nell' immagine si vede una data anteriore al 1 gennaio 1900 , è solo una prova sono al corrente che in quel caso excel non le prende.
Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: MACRO PER GRAFICO DINAMICO

Postdi Flash30005 » 25/02/13 15:29

Inserisci la condizione che se E3 < della data stabilita esce dalla routine,
con questa riga codice
Codice: Seleziona tutto
Range("E3").Value < DateSerial(1960, 1, 1) Then exit sub


Da inserire all'inizio della macro

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 25/02/13 18:59

ciao Flash :)

ho inserito il codice (penso nel modo giusto) copia incolla , ho provato anche a spostarlo in altre posizioni ma mi restituisce sempre lo stesso errore.

attendo le possibili eventuali istruzioni, nel frattempo buona serata Flash e grazie.


Immagine
Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: MACRO PER GRAFICO DINAMICO

Postdi Anthony47 » 25/02/13 23:01

IF Range("E3").Value < DateSerial(1960, 1, 1) Then exit sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: MACRO PER GRAFICO DINAMICO

Postdi Flash30005 » 25/02/13 23:21

Si, come dice Anthony manca l' If all'inizio della riga
nel copiare il codice mi è sfuggito :oops:

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 26/02/13 11:25

Grazie mille Anthony e Flash per le vostre risposte,ho provveduto a inserire If

Volevo chiedervi un dettaglio ,mettiamo che durante l' introduzione della data di calendario nella cella E3 per errore di battitura entri una lettera oppure ad esempio il 7 al posto della / perchè non si è premuto bene maiusc. In questi casi per evitare che esca la fastidiosa finestrella di errore Run-time '13' tipo non corrispondente che istruzione va inserita? in parole povere che venga ignorato quello che non corrisponde correttamente ad una data nella cella E3, e dunque la macro stia in attesa dell' inserimento di una nuova data.

Grazie per la vostra infinita pazienza.
Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: MACRO PER GRAFICO DINAMICO

Postdi Flash30005 » 26/02/13 11:53

Puoi usare questo codice, da inserire sempre all'inizio della macro (sotto alla precedente riga)
Codice: Seleziona tutto
If Len(Replace([E3], "/", "")) > 8 Then
MsgBox "Data Errata"
[E3].Select
Exit Sub
End If


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 26/02/13 12:53

Ciao Flash :)

Ho inserito il codice sotto la riga precedente (poi nella cella E3 come puoi vedere ho simulato un errore di battitura inserendo la lettera U al posto del 9 di 1980) e al momento mi restituisce ancora l'errore di Run-Time '13' tipo non corrispondente, allego immagine con debug

nel frattempo vista l'ora Buon Pranzo!




Immagine

codice corrente

Codice: Seleziona tutto
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("E3").Value < DateSerial(1960, 1, 1) Then Exit Sub

If Len(Replace([E3], "/", "")) > 8 Then
MsgBox "Data Errata"
[E3].Select
Exit Sub
End If

Select Case Target.Address


' Asse Orizzontale del Tempo


Case "$E$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value

Case "$E$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value

Case "$E$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value


' Asse Verticale dei valori


Case "$I$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value

Case "$I$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value

Case "$I$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value

   
    Case Else
End Select
End Sub


Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: MACRO PER GRAFICO DINAMICO

Postdi Flash30005 » 26/02/13 20:55

Hai una strana tastiera perché lo slash "/" si trova insieme al numero 7 e giustamente senza il tasto maiuscolo si digita il 7
ma non c'è alcun numero nel tasto della "U" :D

Allora togli l'ultima routine inviata e inserisci questa che verifica se E3 è una data ed eseguie la macro altrimenti (alla fine della macro va inserita la seconda parte della condizione) fornisce un messaggio di errore e si posiziona sulla cella E3

Codice: Seleziona tutto
If IsDate([E3]) Then
'esegui la macro
'...
Else
MsgBox "Data Errata"
[E3].Select
End If


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 27/02/13 17:52

Ho fatto un pò di confusione nella rappresentazione dell'esempio :oops: ,volevo intendere quando si digita velocemente e invece di premere il tasto giusto si preme quello accanto senza neanche accorgersi.

Dunque ho tolto la routine e ho eseguito le nuove istruzioni inserendo il nuovo codice come indicato e funziona tutto bene.

inserisco il codice completo di come è ora, nel caso possa tornare utile a qualche altro utente.

Codice: Seleziona tutto
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

'Condizioni di funzionamento

'Data di inizio analisi

If Range("E3").Value < DateSerial(1960, 1, 1) Then Exit Sub

'Data di fine analisi

If Range("E2").Value < DateSerial(1961, 1, 1) Then Exit Sub


'Tutore Errori di inserimento date

If IsDate([E3]) Then
'esegui la macro

If IsDate([E2]) Then
'esegui la macro


Select Case Target.Address


' Asse Orizzontale del Tempo


Case "$E$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value

Case "$E$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value

Case "$E$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value


' Asse Verticale dei valori


Case "$I$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value

Case "$I$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value

Case "$I$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value

   
    Case Else
End Select


' Messaggio in caso di errore digitazione Date

Else
MsgBox "Data Errata Ricontrollare"
[E3].Select
End If


Else
MsgBox "Data Errata Ricontrollare"
[E2].Select
End If



End Sub


Quando si inseriscono valori errati si apre correttamente il box che invita a ricontrollare quindi funziona bene , ho notato però tanto per provare che comunque ad Excel sono indigeste le date anteriori al 1900 e in quei casi insiste con l'errore di run-time '13' , scavalcando l' Msgbox , ... ma in fondo chi se ne frega e anche troppo grazie Flash per la tua preparazione e disponibilità.
Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: MACRO PER GRAFICO DINAMICO

Postdi Flash30005 » 28/02/13 04:26

Personalmente inserirei
Codice: Seleziona tutto
If IsDate([E3]) Then

all'inizio,
prima di
If Range("E3").Value < DateSerial(1960, 1, 1) Then Exit Sub

Perché se la data è errata non deve fare alcun controllo
se invece è corretta metti i filtri sulla data

Inoltre per evitare che "accetti" le date inferiori al 1900 prova ad usare la funzione CDate in questa maniera
Codice: Seleziona tutto
If CDate(Range("E3").Value) < DateSerial(1960, 1, 1) Then Exit Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO PER GRAFICO DINAMICO

Postdi Alessandro999 » 28/02/13 11:52

Anche il tocco finale :o , ho modificato la macro secondo le ultime istruzioni e funziona bene! ecco il codice attuale,...credo sia corretto e grazie ancora.

Immagine

Codice: Seleziona tutto
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)


'QUADRO DATI TEMPO


'Data di inizio analisi

If IsDate([E3]) Then

If Range("E3").Value < DateSerial(1960, 1, 1) Then Exit Sub

If CDate(Range("E3").Value) < DateSerial(1960, 1, 1) Then Exit Sub

'Data di fine analisi

If IsDate([E2]) Then

If Range("E2").Value < DateSerial(1960, 1, 1) Then Exit Sub

If CDate(Range("E2").Value) < DateSerial(1960, 1, 1) Then Exit Sub


'Tutore errori su Cadenza mesi nella scala del Tempo

If IsNumeric([E4]) Then



'QUADRO DATI DECLINAZIONI


'Tutore errori su Declinazione massima del corpo celeste

If IsNumeric([I2]) Then

'Tutore errori su Declinazione minima del corpo celeste

If IsNumeric([I3]) Then


'Tutore errori su unità misura scala della declinazione

If IsNumeric([I4]) Then



'REGOLAZIONE DEL GRAFICO


Select Case Target.Address


' Asse Orizzontale del Tempo


Case "$E$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MaximumScale = Target.Value

Case "$E$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MinimumScale = Target.Value

Case "$E$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlCategory, xlPrimary) _
.MajorUnit = Target.Value


' Asse Verticale dei valori


Case "$I$2"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MaximumScale = Target.Value

Case "$I$3"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MinimumScale = Target.Value

Case "$I$4"
ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 2").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value
ActiveSheet.ChartObjects("Chart 3").Chart.Axes(xlValue, xlPrimary) _
.MajorUnit = Target.Value

   
    Case Else
End Select


End If

End If

End If

End If

End If

End If

End Sub




MITICO

Immagine
Il vecchio Windows Xp + Office 2007.Ita
Windows 7 + Office 2007.Ita

Mi sembra che più si diventa vecchi e più il tempo scorre veloce, Bella fregatura !!!
Avatar utente
Alessandro999
Utente Senior
 
Post: 123
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: MACRO PER GRAFICO DINAMICO

Postdi Flash30005 » 28/02/13 15:00

Grazie per i complimenti e per l'animazione!!! :)
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "MACRO PER GRAFICO DINAMICO":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti