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, 16.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, 20.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, 20.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, 10.41.25   #4
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
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, 13.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, 22.15.49   #6
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
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, 21.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, 11.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, 18.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, 2 visite)
Gianca53 non è collegato   Rispondi citando
Vecchio 10-12-2017, 00.25.22   #10
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
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
[IMG] è 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 09-03-2013 00.30.13
Grafico in OpenOffice Calc: Non mi riesce Zievatron Office suite 0 28-02-2010 21.20.06
Grafico Excel (OLE) in Report Access lssmsm Office suite 0 03-12-2004 12.25.24
Grafico Excel (OLE) in un Report Access lssmsm Programmazione 0 02-12-2004 11.40.30

Orario GMT +2. Ora sono le: 10.10.51.


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.