Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

excel macro per grafici

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

excel macro per grafici

Postdi sandrin81a » 29/08/14 11:37

Ciao a tutti,
qui:
http://www.filedropper.com/test_104

vorrei creare una macro che mi disegnasse i 3 grafici in automatico. Le lunghezze sono variabili, come anche i nomi dei worksheet e workbook.

purtroppo non ho molte idee... ho provato a registrare una macro ma non riesco a renderla universale... :?:

una grazie in anticipo a tutti i suggerimenti
ciao ciao
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53

Sponsor
 

Re: excel macro per grafici

Postdi sandrin81a » 29/08/14 13:32

quello che stavo cercando di fare è una cosa simile a:

Codice: Seleziona tutto
Sub Grafico()

Dim NomeLinea As String
NomeLinea = linea1

Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheet("linea1").Range("B3:D13")
ActiveChart.Location Where:=xlLocationAsObject, Name :="linea1"

EndSub


cosi facendo riesco a inserire un grafico a linee con il range desiderato (per comodità l'ho provato su una tabella con solo 10 righe)
la variabile NomeLinea è quella che da il nome al worksheet, viene immessa in una macro per formattare la tabella.

ActiveChart.SetSourceData Source:=Sheet(NomeLinea).Range("B3:D13")

non funziona, devo per forza usare
ActiveChart.SetSourceData Source:=Sheet("linea1").Range("B3:D13")

ma in questo modo dovrei cambiarla di volta in volta invece di sfruttare il nome già presente nella variabile...

ciao ciao
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53

Re: excel macro per grafici

Postdi Zer0Kelvin » 29/08/14 14:42

Ciao.
Andando "a naso", direi che puoi provare ad aggirare il problema assegnando il range ad una variabile:
Codice: Seleziona tutto
Dim R As Range
'....

    Set R = Sheet(NomeLinea).Range("B3:D13")
    ActiveChart.SetSourceData Source:=R
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: excel macro per grafici

Postdi sandrin81a » 29/08/14 15:29

Grazie mille... ho avuto l'illuminazione... in realtà è stato più facile di quello che sembrava... come da codice.
mi manca soltanto il modo di ridimensionare e disporre i grafici in alto a destra della tabella ( :?: )


Codice: Seleziona tutto
Sub GraficoSulFoglio()

Dim NomeLinea As String
Dim NomeVia As String
Dim NumeroTracce As Long
Dim Verso As String



NomeLinea = "REX0040EST_1641"
NomeVia = "Via CICCIO"
NumeroTracce = 124
Verso = "OVEST-EST"

'-----------GRAFICO TEMPI---------------------------------------------------------

Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets(NomeLinea).Range("b3:d" & NumeroTracce + 3&)
ActiveChart.Location Where:=xlLocationAsObject, Name:=NomeLinea
    ActiveChart.ClearToMatchStyle
    ActiveChart.ApplyLayout (1)
With ActiveChart.Axes(xlCategory)
.ReversePlotOrder = False
.TickMarkSpacing = 25 ' spaziatura valori
.TickLabelSpacing = 25
.AxisBetweenCategories = False
.MajorTickMark = xlOutside
End With

With ActiveChart.Axes(xlValue)
.ReversePlotOrder = True
.TickLabels.NumberFormat = "0.00"
.MajorTickMark = xlOutside
End With

ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "Orizzonti " & NomeVia & " - direzione " & Verso & ", profondita espresse in tempi (ns)"
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "ns"

'-----------GRAFICO PROFONDITA---------------------------------------------------------

Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets(NomeLinea).Range("e3:g" & NumeroTracce + 3&)
ActiveChart.Location Where:=xlLocationAsObject, Name:=NomeLinea
    ActiveChart.ClearToMatchStyle
    ActiveChart.ApplyLayout (1)
With ActiveChart.Axes(xlCategory)
.ReversePlotOrder = False
.TickMarkSpacing = 25 ' spaziatura valori
.TickLabelSpacing = 25
.AxisBetweenCategories = False
.MajorTickMark = xlOutside
End With

With ActiveChart.Axes(xlValue)
.ReversePlotOrder = True
.TickLabels.NumberFormat = "0.00"
.MajorTickMark = xlOutside
End With

ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "Orizzonti " & NomeVia & " - direzione " & Verso & ", profondita espresse in metri (m)"
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "m"

'-----------GRAFICO SPESSORI---------------------------------------------------------

Charts.Add
ActiveChart.ChartType = xlAreaStacked
ActiveChart.SetSourceData Source:=Sheets(NomeLinea).Range("h3:j" & NumeroTracce + 3&)
ActiveChart.Location Where:=xlLocationAsObject, Name:=NomeLinea
    ActiveChart.ClearToMatchStyle
    ActiveChart.ApplyLayout (1)
With ActiveChart.Axes(xlCategory)
.ReversePlotOrder = False
.TickMarkSpacing = 25 ' spaziatura valori
.TickLabelSpacing = 25
.AxisBetweenCategories = False
.MajorTickMark = xlOutside
End With

With ActiveChart.Axes(xlValue)
.ReversePlotOrder = True
.TickLabels.NumberFormat = "0.00"
.MajorTickMark = xlOutside
End With

ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "Spessori strati " & NomeVia & " - direzione " & Verso & ", spessori espressi in metri (m)"
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "m"
End Sub

sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53


Torna a Applicazioni Office Windows


Topic correlati a "excel macro per grafici":


Chi c’è in linea

Visitano il forum: tex willer e 12 ospiti