grafico de rango variable desde codigo

02/07/2005 - 00:10 por carloshernandezy | Informe spam
Hola a todos,

me encuentro con un pequeño problema intento crear desde código un
gráfico de rango variable y me es imposible.

Estoy trabajando con una hoja (*.xls) que contiene el código e intento
crear el gráfico en otra hoja distinta que a su vez contiene los
datos.

El rango variable se define correctamente pero a la hora de ejecutar el
código del gráfico aparece un error.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
02/07/2005 - 05:05 | Informe spam
hola, carlos !

... intento crear desde codigo un grafico de rango variable
... trabajando con una hoja... que contiene el codigo... crear el grafico en... hoja distinta que... contiene los datos.
El rango variable se define correctamente pero a la hora de ejecutar el codigo del grafico aparece un error.



sera 'conveniente' si expones [al menos] la parte del codigo que presenta la falla
-> y algunos otros detalles como...
[segun parece]... esta el codigo en el modulo de alguna hoja ?
[probablemente]... estas 'calificando' correctamente a que hoja se refieren los rangos ?
puedes precisar lo que necesitas 'lograr' ?

comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 carloshernandezy
02/07/2005 - 11:37 | Informe spam
Este es el código que genera el error se para en la linea marcada con
el error es subindice fuera del rango, el código esta en el módulo de una hoja pero no en la que estan los datos ni el futuro gráfico.










Lo que estoy intentando es automatizar la generación de un gráfico
que hay que hacer semanalmente con datos que se presentan en columnas y
que varian en número de una semana a otra.

Si los datos, gráfico y código estan en la misma hoja el código
funciona sin ningún problema, se presenta el problema a la hora de
trabajar en dos "workbooks" diferentes.

El nombre de la "Sheet" y el rango se generan correctamente.

Muchas gracias por tu interes.

Sub Grafico()

ActiveWorkbook.Names.Add Name:="RngC", RefersToR1C1:= _
"=OFFSET(Hoja1!R2C3,0,0,COUNTA(Hoja1!C3)-1)"


Sheets(1).Name = "TOC"
ActiveWindow.Visible = False
Windows("TOC").Activate










Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Sheets("TOC").Range("C2:C3065"),
PlotBy:= _
xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="TOC"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "TOC en "
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "ppb"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone,
LegendKey:=False
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
With Selection.Interior
.ColorIndex = 2
.PatternColorIndex = 1
.Pattern = xlSolid
End With
End Sub
Respuesta Responder a este mensaje
#3 carloshernandezy
03/07/2005 - 00:02 | Informe spam
Finalmente he conseguido lo que queria lo he solucionado de la
siguiente manera, envio el código fianl por si le interesa a alguien

Sub Grafico()
Dim wb As Workbook
Dim ws As Worksheet
Dim cht As Excel.Chart


Set wb = ActiveWorkbook
'

Set ws = wb.Sheets(1)

'nombra la hoja actual
ws.Name = "TOC"

'Define el rango de trabajo RngC
wb.Names.Add Name:="RngC", RefersToR1C1:= _
"=OFFSET(TOC!R1C3,0,0,COUNTA(TOC!C3))"

Application.ScreenUpdating = False
Set cht = ws.ChartObjects.Add(50, 50, 400, 300).Chart



With cht
.ChartType = xlXYScatterSmoothNoMarkers



.SetSourceData Source:=ws.Range("TOC!RngC"), PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:="TOC"
.HasTitle = True
.ChartTitle.Characters.Text = "TOC en "
With .Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With .Axes(xlValue)
.HasTitle = True
.AxisTitle.Characters.Text = "ppb"
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
.HasLegend = False
With .PlotArea
With .Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
With .Interior
.ColorIndex = 2
.PatternColorIndex = 1
.Pattern = xlSolid
End With
End With
End With
Application.ScreenUpdating = True


'Quita las unidades del eje X
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartArea.Select
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = False
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida