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 !

Mostrar la cita
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.
#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
Mostrar la cita
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
Mostrar la cita
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
#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
Ads by Google
Search Busqueda sugerida