Macro de rango dinamico en Excel

Buen dia, tengo un pequeño problema, necesito hacer un grafico con una marco; grabando la macro me sale el codigo:
Sub rang()
'
Range("N7").Select
Charts.Add
ActiveChart.ChartType = xl3DPieExploded
ActiveChart.SetSourceData Source:=Sheets("ALTA-PROYECTO").Range("N7")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='ALTA-PROYECTO'!R22C10:R22C13"
ActiveChart.SeriesCollection(1).Values = "='ALTA-PROYECTO'!R24C10:R24C13"
ActiveChart.Location Where:=xlLocationAsObject, Name:="ALTA-PROYECTO"
End Sub
PERO necesito que el rango varie de acuerdo a unas variables que obtengo en la macro que llevo, es decir necesito que ese 22 y 24 que se muestra en el codigo de arriba se maneje con una variable, como hago???
Mil gracias!!.

1 Respuesta

Respuesta
1
Prueba de esta forma
Dim va1 As Integer
Dim va2 As Integer
ActiveChart.SeriesCollection(1).XValues = "='ALTA-PROYECTO'!R " & va1 & " C10:R22C13"
ActiveChart.SeriesCollection(1).Values = "='ALTA-PROYECTO'!R " & va2 & " C10:R24C13"
De todas formas si tengo el libro de excel con tu macro podría confirmarlo
>Un saludo
>Julio
Hola Julio, mira que eso es lo que intenté hacer antes de enviar mi pregunta y no sirve :(
Yo hacia:
ActiveChart.SeriesCollection(1).XValues = "='ALTA-PROYECTO'!R " & va1 & " C10:R "& val &" C13"
ActiveChart.SeriesCollection(1).Values = "='ALTA-PROYECTO'!R " & val2 & " C10:R "& val2 & " C13"
No funciona nadita.. Esto es para hacer un grafico pero no de un rango como tal si no utilizando la opcion series en el diagrama!.
Te agradezco mucho tu ayuda.
Mandame el libro y lo veo
Ponme tu correo y te mando un email
>Un saludo
>Julio
Hola Julio, mira asi lo pudimos hacer, este es un pedacito de programa, las variables se sacan en el desarrollo de la macro, pero el pedacito que nos incunbe en la pregunta es el siguiente:
...
For i = 1 To contador
ubi = ubi + 300
Set rgrafica = Union(ws.Range(rango.Offset(0, 2), rango.Offset(0, 5)), ws.Range(rango.Offset(i, 2), rango.Offset(i, 5)))
Charts.Add
ActiveChart.ChartType = xl3DPieExploded
ActiveChart.SetSourceData Source:=rgrafica, PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:=ws.Name
n = Len(ws.Name)
ActiveSheet.Shapes(Mid(ActiveChart.Name, n + 2, 20)).IncrementLeft ubi
ActiveSheet.Shapes(Mid(ActiveChart.Name, n + 2, 20)).IncrementTop 350
ActiveSheet.Shapes(Mid(ActiveChart.Name, n + 2, 20)).ScaleWidth 0.6, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes(Mid(ActiveChart.Name, n + 2, 20)).ScaleHeight 0.5, msoFalse, _
msoScaleFromTopLeft
ActiveWindow.Visible = False
ActiveSheet.ChartObjects(Mid(ActiveChart.Name, n + 2, 20)).Activate
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Name = rango.Offset(i)
ActiveWindow.Visible = False
ActiveSheet.ChartObjects(Mid(ActiveChart.Name, n + 2, 20)).Activate
ActiveChart.ChartArea.Select
ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
HasLeaderLines:=True, ShowSeriesName:=False, ShowCategoryName:=False, _
ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False
ActiveWindow.Visible = False
ActiveSheet.ChartObjects(Mid(ActiveChart.Name, n + 2, 20)).Activate
ActiveChart.PlotArea.Select
With Selection.Border
.Weight = xlHairline
.LineStyle = xlNone
End With
With Selection.Interior
.ColorIndex = 2
.PatternColorIndex = 1
.Pattern = xlSolid
End With
ActiveWindow.Visible = False
ActiveSheet.ChartObjects(Mid(ActiveChart.Name, n + 2, 20)).Activate
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Next i ...
Y tambien me va corriendo las graficas porque como puede graficarse 1 no mas tambien se pueden graficar 10 o las que se deseen y no quedan sobrelapadas.
Mil gracias, y espero que esta consulta le sirva a otras personas.
Bye

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas