Gráfico en formulario tomando datos de una hoja

26/04/2005 - 12:38 por emilio | Informe spam
Hola a tod@s,

llevo toda la mañana peleandome con esto y no doy con la tecla, estoy
intentando mostrar un gráfico en unformulario, basado en datos de una hoja,
siguiendo las indicaciones de Hector Miguel en hilos anteriores he llegado a
mostrar un gráfico con una unica serie, sin embargo cuando intento añadir
otra serie, ya no funciona, el error se produce en
".SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound, "C2:C17"" y
dice "parámetro no valido"
Tampoco me muestra correctamente el eje de las X pues me muestra una serie
de numeros correlativos y no las fechas que hay en la columna A.
¿Alguién puede darme alguna idea?
Gracias a tod@s, el código que uso es el siguiente

Sub Actualiza()
Dim Fila As Byte, _
Col As Byte, _
Dato As Variant, _
Cc As Object

With Spreadsheet1
.Cells(1, 1) = "Fecha"
.Cells(1, 2) = "Uno"
.Cells(1, 3) = "Dos"

For Col = 2 To 4
For Fila = 8 To 25
Dato = Worksheets("Informe").Cells(Fila, Col)
.Cells(Fila - 6, Col - 1) = Dato
If Col = 2 Then
.Cells(Fila - 6, Col - 1).NumberFormat = "d-mmm-yy"
Else
.Cells(Fila - 6, Col - 1).NumberFormat = "0.00"
End If
Next
Next
End With
With ChartSpace1
.Clear
Set Cc = .Constants
Set .DataSource = Me.Spreadsheet1
.Charts.Add
With .Charts(0)
.Type = Cc.chChartTypeLine
.SetData Cc.chDimCategories, 0, "a1:a17"

.SetData Cc.chDimSeriesNames, 0, "b1"
.SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b17"
.SeriesCollection.Add
.SetData Cc.chDimSeriesNames, 0, "C1"
.SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound, "C2:C17"

End With
End With
End Sub

Preguntas similare

Leer las respuestas

#6 KL
26/04/2005 - 15:10 | Informe spam
Hola Emilio,

Mal asunto :-( La version de MSO que has usado para crear el fichero es XP y
yo solo tengo 97 y 2000. Al abrir el fichero me avisa que hay algo que
algunos objetos se van a perder y luego me faltan controles en el UserForm y
la librera de Microsoft Office XP Web Components a la que no consigo
encontrar un sustituto en MSO2000 (probablemente no exista). Por lo tanto,
lo siento, pero..., no puedo depurar tu codigo. He intentado seguir la
logica de tu macro y no consigo encontrar ningun fallo a no ser que alguna
de las constantes que usas no sea compatible con el tipo de grafico que
usas.

Un saludo,
KL

"Emilio" wrote in message
news:
Mostrar la cita
#7 Emilio
26/04/2005 - 15:33 | Informe spam
Gracias KL
No te preocupes, que le vamos a hacer :( no podemos luchar contra los
elementos.
Ese es el problema que no veo nada que sea especialmente susceptible de ser
erroneo y en la ayuda no soy capaz de ver nada que me saque de apuros.
Esperemos a ver si alguién tiene experiencia con este tema y nos aclara
donde esta el fallo

Muchas gracias de nuevo

Saludos a
Emilio

"KL" escribió:

Mostrar la cita
#8 Héctor Miguel
27/04/2005 - 10:20 | Informe spam
hola, chicos !

Mostrar la cita
de tu mensaje 'original'... voy a [tratar de] 'exponer' las lineas/causas y [posibles] 'soluciones' del 'fallo' :-(
el 'manejo' del objeto 'ChartSpace1' es el que tiene [algunas] lineas que necesitan modificarse/moverse...

si cualquier duda [o te dejo mas 'enredado'] :)) ... comentas?
saludos,
hector.
__ 'error' 1 __
Mostrar la cita
.SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound, "C2:C17"... dice "parametro no valido"
__ 'error' 2 __
Mostrar la cita
1.- podrias establecer n_titulos para n_series desde la primera instruccion -> .SetData Cc.chDimSeriesNames, 0, "b1"
si en lugar de 'usar' una sola celda [b1] utilizas el rango 'necesario' [tomado del objeto 'SpreadSheet1'] p.e.
.SetData Cc.chDimSeriesNames, 0, "b1:c1" [para el caso de 'graficar' datos de las columnas 'B' y 'C']
con lo cual, la siguiente 'asignacion' de sus valores seria 'similar' [por no decir la misma] a .SeriesCollection(0)
2.- si utilizas la primera instruccion para el titulo de SOLO la primer serie...
a) SI seria necesario utilizar .SeriesCollection.Add [por cada 'nueva' serie] y...
b) establecer [cada] 'nuevo titulo' para [cada] 'nueva serie'... debe quedar 'emparentado' NO al objeto 'ChartSpace1'
[que es al que se esta haciendo 'referencia' como primera instancia dentro del bloque 'With'] CAMBIA...
de: -> .SetData Cc.chDimSeriesNames, 0, "c1"
a: -> .SeriesCollection(1).SetData Cc.chDimSeriesNames, 0, "c1"
=> con alguna de las opciones anteriores... podras 'corregir' el error del 'parametro no valido' ;)

3.- para el caso de que las categorias no muestran los textos de su 'origen' [el formato de fecha en el SpreadSheet1]...
DEBERAS 'invertir el orden' en el que se 'asignan' los origenes de las siguientes lineas...
PRIMERO establece los nombres de las series: -> .SetData Cc.chDimSeriesNames, 0, "b1" <- o... "b1:c1"
DESPUES estableces las categorias: -> .SetData Cc.chDimCategories, 0, "a1:a17" <-
FINALMENTE vas 'llenando' los valores a graficar

[como veras... 'trabajar' con los office-web-components... tiene sus 'especiales'] ;)
#9 Emilio
27/04/2005 - 19:26 | Informe spam
Muchas gracias Héctor Miguel
ya, ya veo los OWC, son muy especiales, en mi tierra diríamos algo mas
fuerte que especiales ;-)

Lastima que no he visto tu mensaje hasta ahora, mañana me meto con ello en
el curro y te cuento el resultado.

Gracias de nuevo

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"Héctor Miguel" escribió en el mensaje
news:%
Mostrar la cita
#10 Emilio
28/04/2005 - 09:45 | Informe spam
Perfecto como siempre, resuelto el problema, aquí va el resultado para que
quede constancia

Muchas gracias Hector Miguel :-))

Sub Actualiza()
Dim Fila As Byte, _
Col As Byte, _
Dato As Variant, _
Cc As Object

With Spreadsheet1
.Cells(1, 1) = "Fecha"
.Cells(1, 2) = "Uno"
.Cells(1, 3) = "Dos"

For Col = 2 To 4
For Fila = 8 To 25
Dato = Worksheets("Informe").Cells(Fila, Col)
.Cells(Fila - 6, Col - 1) = Dato
If Col = 2 Then
.Cells(Fila - 6, Col - 1).NumberFormat = "d-mmm-yy"
Else
.Cells(Fila - 6, Col - 1).NumberFormat = "0.00"
End If
Next
Next
End With
With ChartSpace1
.Clear
Set Cc = .Constants
Set .DataSource = Me.Spreadsheet1
.Charts.Add
With .Charts(0)
' tipo de gráfico
.Type = Cc.chChartTypeLine
' añado los nombres de las series
.SetData Cc.chDimSeriesNames, 0, "b1:c1"
' añado las distintas series
.SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b17"

.SeriesCollection.Add
.SeriesCollection(1).SetData Cc.chDimSeriesNames, 0, "c1"
.SeriesCollection(1).SetData Cc.chDimValues, 0, "c2:c17"
' rango del eje X
.SetData Cc.chDimCategories, 0, "a2:a17"

End With
End With
End Sub

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Héctor Miguel" escribió en el mensaje
news:%
Mostrar la cita
ayuda... nada que me saque de apuros.
Mostrar la cita
y [posibles] 'soluciones' del 'fallo' :-(
Mostrar la cita
necesitan modificarse/moverse...
Mostrar la cita
"C2:C17"... dice "parametro no valido"
Mostrar la cita
y no las fechas que hay en la columna A'
Mostrar la cita
instruccion -> .SetData Cc.chDimSeriesNames, 0, "b1"
Mostrar la cita
'necesario' [tomado del objeto 'SpreadSheet1'] p.e.
Mostrar la cita
'graficar' datos de las columnas 'B' y 'C']
Mostrar la cita
[por no decir la misma] a .SeriesCollection(0)
[de lo contrario]...
Mostrar la cita
serie...
Mostrar la cita
'nueva' serie] y...
Mostrar la cita
quedar 'emparentado' NO al objeto 'ChartSpace1'
Mostrar la cita
instancia dentro del bloque 'With'] CAMBIA...
Mostrar la cita
'parametro no valido' ;)
Mostrar la cita
'origen' [el formato de fecha en el SpreadSheet1]...
Mostrar la cita
las siguientes lineas...
Mostrar la cita
Cc.chDimSeriesNames, 0, "b1" <- o... "b1:c1"
Mostrar la cita
"a1:a17" <-
Mostrar la cita
'especiales'] ;)
Mostrar la cita
Ads by Google
Search Busqueda sugerida