Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Office suite

Notices

Rispondi
 
Strumenti discussione
Vecchio 29-11-2017, 15.02.47   #1
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 25
Gianca53 promette bene
Grafico da VBA

la macro che segue "dovrebbe" costruire un grafico su un foglio separato e quindi copiarlo in un altro foglio riducendone opportunamente le dimensioni.
Il problema che non segue la logica che vorrei , ovvero : crea grafico1, copia, cancella grafico1 e resta predisposto per nuova importazione dei dati.
Nota, i dati vengono importati da un file CSV tramite macro di chiamata, in questa stessa macro ho inserito il Call Test.
Cosa mi succede? a volte il grafico 1 diventa grafico 2 etc e va tutto in palla, le due parti della macro non sono coordinate .

Quota:
Sub Test() ' crea grafico
Dim LastRow As Long
Dim Rng1 As Range
Dim rng2 As Range
Dim ShName As String

With ActiveSheet ' qui seleziono ultima riga e range dati
LastRow = .Range("K" & .Rows.Count).End(xlUp).Row
Set Rng1 = .Range("K2:K" & LastRow & ", L1:L" & LastRow)
'Set rng2 = .Range("L2:L" & LastRow)
ShName = .Name
End With
Charts.Add
With ActiveChart
.ChartType = xlLine
.SetSourceData Source:=Rng1
With .SeriesCollection.NewSeries
'.Values = rng2
.AxisGroup = 2
End With
.Location Where:=xlLocationAsObject, Name:=ShName
End With ' fine macro di preparazione del grafico


'copia grafico1 a Storico_CSV
Sheets("Grafico1").Activate
ActiveSheet.Unprotect
ActiveChart.Legend.Select
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Sheets("Storico_CSV").Activate
Sheets("Storico_CSV").Unprotect
Range("A5").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Grafico1").Activate
ActiveSheet.Shapes("Grafcico1").ScaleWidth 0.9865924553, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Grafico1").ScaleHeight 0.9701706491, msoFalse, _
msoScaleFromBottomRight
ActiveWindow.SmallScroll Down:=12
ActiveSheet.ChartObjects("Grafico1").Activate
ActiveSheet.Shapes("Name").ScaleWidth 0.9833852544, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Name").ScaleHeight 0.7638077647, msoFalse, _
msoScaleFromTopLeft
'ActiveWindow.ScrollRow = 1
Sheets("Grafico1").Select
ActiveWindow.SelectedSheets.Delete
ActiveSheet.Protect
End Sub

Modifica .
Questa macro funziona bene su un grafico esistente (come struttura ed impostazione ) e lo aggiorna perfettamente .

Quota:
Sub Test() ' crea grafico
Dim LastRow As Long
Dim Rng1 As Range
Dim rng2 As Range
Dim ShName As String

With ActiveSheet ' qui seleziono ultima riga e range dati
LastRow = .Range("K" & .Rows.Count).End(xlUp).Row
Set Rng1 = .Range("K2:K" & LastRow & ", L1:L" & LastRow)
'Set rng2 = .Range("L2:L" & LastRow)
ShName = .Name
End With
Range("A1").Select
End Sub
Gianca53 non  collegato   Rispondi citando
Vecchio 29-11-2017, 19.07.15   #2
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 25
Gianca53 promette bene
Rif: Grafico da VBA

Questa macro sembra funzionare meglio , un avolta capito che l'origine il foglio1 e la destinazione del grafico il foglio5 :

Quota:
Sub Test() ' crea grafico
Dim LastRow As Long
Dim Rng1 As Range
Dim rng2 As Range
Dim ShName As String

With ActiveSheet
LastRow = .Range("K" & .Rows.Count).End(xlUp).Row
Set Rng1 = .Range("K2:K" & LastRow & ", L1:L" & LastRow)
'Set rng2 = .Range("L2:L" & LastRow)
ShName = .Name
End With
Charts.Add
With ActiveChart
.ChartType = xlLine
.SetSourceData Source:=Rng1
With .SeriesCollection.NewSeries
'.Values = rng2
.AxisGroup = 2
End With
.Location Where:=xlLocationAsObject, Name:=ShName
End With
'copia grafico1 a Storico_CSV
Sheets("Grafico1").Select ' grafico di origine
ActiveSheet.Unprotect
ActiveChart.Legend.Select
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Sheets("Storico_CSV").Select
Range("A5").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Grafico 5").Activate ' diventa "grafico 5" dopo copia sul foglio Storico_CSV
ActiveSheet.Shapes("Grafico 5").ScaleWidth 0.9865924553, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Grafico 5").ScaleHeight 0.9701706491, msoFalse, _
msoScaleFromBottomRight
ActiveWindow.SmallScroll Down:=12
ActiveSheet.ChartObjects("Grafico 5").Activate
ActiveSheet.Shapes("Grafico 5").ScaleWidth 0.9833852544, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Grafico 5").ScaleHeight 0.7638077647, msoFalse, _
msoScaleFromTopLeft
ActiveWindow.ScrollRow = 1
ActiveSheet.Protect
End Sub
Files allegati
Tipo file: rar Screenshot 2017-11-29 18.28.21.rar (112,4 Kb, 1 visite)
Gianca53 non  collegato   Rispondi citando
Vecchio 29-11-2017, 19.23.20   #3
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 25
Gianca53 promette bene
Rif: Grafico da VBA

Rettifico , si impianta qui :

.Location Where:=xlLocationAsObject, Name:=ShName
Gianca53 non  collegato   Rispondi citando
Vecchio 01-12-2017, 09.41.25   #4
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.215
Alexsandra  un gioiello raroAlexsandra  un gioiello raroAlexsandra  un gioiello raroAlexsandra  un gioiello raro
Rif: Grafico da VBA

Non pu "piantarsi" in quella riga, il codice pulito.
probabile invece che ci sia un problema sulle variabili dopo vari utilizzi e/o prove
faccio delle prove e poi ti dico
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non  collegato   Rispondi citando
Vecchio 01-12-2017, 12.59.26   #5
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 25
Gianca53 promette bene
Rif: Grafico da VBA

Ok, grazie, infatti ho un altro dubbio, ovvero a volte tutto funziona per il meglio, mentre talvolta nel grafico noto la riduzione dei dati visualizzati, pur con una selezione dei dati, da macro, corretta e l'errore non costante.
Gianca53 non  collegato   Rispondi citando
Vecchio 01-12-2017, 21.15.49   #6
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.215
Alexsandra  un gioiello raroAlexsandra  un gioiello raroAlexsandra  un gioiello raroAlexsandra  un gioiello raro
Rif: Grafico da VBA

Perch invece di creare il grafico, copiarlo in un altro foglio e poi rimuoverlo non copi direttamente nel foglio "storico". Prova a valutare un codice come questo

Codice:
Sub Test() ' crea grafico
Dim LastRow As Long
Dim Rng1 As Range
Dim ShName As String

With ActiveSheet
    LastRow = .Range("K" & .Rows.Count).End(xlUp).Row
    Set Rng1 = .Range("K2:K" & LastRow & ", L1:L" & LastRow)
End With

Charts.Add

With ActiveChart
    .ChartType = xlLine
    .SetSourceData Source:=Rng1

  With .SeriesCollection.NewSeries
    .AxisGroup = 2
  End With
  
.Location Where:=xlLocationAsObject, Name:="storico"
End With

With ActiveSheet.ChartObjects("Grafico 1") 'dimensioni grafico
    .Width = 300
    .Height = 150
    .Top = Range("A5").Top
    .Left = Range("A5").Left + 5
    End With
Sheets("foglio1").Select

Set Rng1 = Nothing

End Sub
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non  collegato   Rispondi citando
Vecchio 03-12-2017, 20.47.33   #7
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 25
Gianca53 promette bene
Rif: Grafico da VBA

Grazie, effettivamente pi efficace, ora non mi resta che adattare il tutto alle mie esigenze grafiche con l'aggiunta di due medie mobili. Provo e poi vi so dire.

Ho una gestione dati di circa 1500 righe, quale il limite gestito da excel 2013 x la grafica ?
Gianca53 non  collegato   Rispondi citando
Vecchio 05-12-2017, 10.32.41   #8
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 25
Gianca53 promette bene
Rif: Grafico da VBA

Sembra banale, ma ho scoperto un mare di contraddizioni nella costruzione di grafici con VBA, ci che va bene x Excel 2013, non va bene con il 2010 o 2007 et viceversa. A volte anche macro create con il generatore, poi applicate sul foglio attivo, si inceppano e non funzionano pi.
Gianca53 non  collegato   Rispondi citando
Vecchio 08-12-2017, 17.28.20   #9
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 25
Gianca53 promette bene
Rif: Grafico da VBA

Giusto per concludere l'argomento e i dubbi sollevati, allego file di esempio che si aggiorna di volta in volta, ad ogni caricamento di dati di borsa nella applicazione su cui sto lavorando, nell'esempio ricarica ovviamente sempre gli stessi dati.
Aggiungo anche un breve riepilogo di macro che creano grafici, l'ultima delle quali collegata ad un intervallo dinamico.
Files allegati
Tipo file: zip grafici.zip (115,6 Kb, 0 visite)
Gianca53 non  collegato   Rispondi citando
Vecchio 09-12-2017, 23.25.22   #10
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.215
Alexsandra  un gioiello raroAlexsandra  un gioiello raroAlexsandra  un gioiello raroAlexsandra  un gioiello raro
Rif: Grafico da VBA

Bello, per chi ci capisce di borsa
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non  collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
Il codice HTML OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Doom Engine Grafico AMIGA Masterizzazione Giochi Games 0 08-03-2013 23.30.13
Grafico in OpenOffice Calc: Non mi riesce Zievatron Office suite 0 28-02-2010 20.20.06
Grafico Excel (OLE) in Report Access lssmsm Office suite 0 03-12-2004 11.25.24
Grafico Excel (OLE) in un Report Access lssmsm Programmazione 0 02-12-2004 10.40.30

Orario GMT +1. Ora sono le: 18.58.03.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright Jelsoft Enterprises Limited.