error argumento no valido

03/05/2005 - 22:57 por fredy | Informe spam
hola grupo... este es un codigo que copie del foro para graficas en
formulario con office-web-components pero al ejecutarlo me sale error en la
linea

.Cells(Fila - 6, Col - 1) = Dato

argumento no valido

el codigo completo es :

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

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
04/05/2005 - 04:50 | Informe spam
hola, fredy !

... un codigo que copie del foro para graficas en formulario con office-web-components
... al ejecutarlo me sale error en la linea
.Cells(Fila - 6, Col - 1) = Dato
argumento no valido



revisa si algo de lo siguiente pudiera darte 'luz' para encontrar la 'causa'
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.

[es probable que] los datos 'reales' que manejas para el 'pase' al owc spreadsheet1 no 'coinciden' -?-
la parte 'central' del codigo que estas usando/copiando son las lineas...
With Spreadsheet1
[... codigo intermedio ...]
For Col = 2 To 4
For Fila = 8 To 25
Dato = Worksheets("Informe").Cells(Fila, Col)
.Cells(Fila - 6, Col - 1) = Dato
[... codigo intermedio ...]



-> y el codigo esta 'asumiendo' que los datos que se van a traspasar al owc spreadsheet1 'vienen de...'
la hoja 'Informes' y estan en el rango de celdas 'B8:D25' [para lo cual...]
el bucle interior 'avanza' por las filas 8 a 25 ->For Fila = 8 To 25<-
el bucle exterior 'avanza' por las columnas 'B' a 'D' [2 a 4] -> For Col = 2 To 4<-
-> por lo cual, una vez 'depositados' en el owc spreadsheet1... van a quedar en el rango 'A2:C19'
es decir... SEIS filas Y UNA columna 'menos' [o mas arriba/atras] que en el rango 'original'
es por eso que cada dato copiado de su celda 'original' -> Dato = Worksheets("Informe").Cells(Fila, Col)
es 'depositado' [with spreadsheet1] mas 'atrasadito' -> .Cells(Fila - 6, Col - 1) = Dato
=> aunque despues 'se pasa' al owc' chartspace1 SOLO de las filas 2 a 17 <= -???-
Respuesta Responder a este mensaje
#2 fredy
04/05/2005 - 15:22 | Informe spam
Gracia Hector pero lo mismo me sucede en
Sub Actualiza()
Dim Fila As Byte, Col As Byte, Dato
With Spreadsheet1
For Col = 1 To 2
For Fila = 1 To 5
Dato = Worksheets("Hoja1").Cells(Fila, Col)' dato="casa" y en la
siguiente linea falla
.Cells(Fila, Col) = Dato
Next
Next
End With
With ChartSpace1: .Clear
Set Cc = .Constants
Set .DataSource = Me.Spreadsheet1
.Charts.Add
With .Charts(0)
.Type = Cc.chChartTypeLineMarkers
.SetData Cc.chDimCategories, 0, "a2:a5"
.SetData Cc.chDimSeriesNames, 0, "b1"
.SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b5"
End With
End With
End Sub

muchas gracias!


"Héctor Miguel" escribió:

hola, fredy !

> ... un codigo que copie del foro para graficas en formulario con office-web-components
> ... al ejecutarlo me sale error en la linea
> .Cells(Fila - 6, Col - 1) = Dato
> argumento no valido

revisa si algo de lo siguiente pudiera darte 'luz' para encontrar la 'causa'
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.

[es probable que] los datos 'reales' que manejas para el 'pase' al owc spreadsheet1 no 'coinciden' -?-
la parte 'central' del codigo que estas usando/copiando son las lineas...
> With Spreadsheet1
> [... codigo intermedio ...]
> For Col = 2 To 4
> For Fila = 8 To 25
> Dato = Worksheets("Informe").Cells(Fila, Col)
> .Cells(Fila - 6, Col - 1) = Dato
> [... codigo intermedio ...]

-> y el codigo esta 'asumiendo' que los datos que se van a traspasar al owc spreadsheet1 'vienen de...'
la hoja 'Informes' y estan en el rango de celdas 'B8:D25' [para lo cual...]
el bucle interior 'avanza' por las filas 8 a 25 ->For Fila = 8 To 25<-
el bucle exterior 'avanza' por las columnas 'B' a 'D' [2 a 4] -> For Col = 2 To 4<-
-> por lo cual, una vez 'depositados' en el owc spreadsheet1... van a quedar en el rango 'A2:C19'
es decir... SEIS filas Y UNA columna 'menos' [o mas arriba/atras] que en el rango 'original'
es por eso que cada dato copiado de su celda 'original' -> Dato = Worksheets("Informe").Cells(Fila, Col)
es 'depositado' [with spreadsheet1] mas 'atrasadito' -> .Cells(Fila - 6, Col - 1) = Dato
=> aunque despues 'se pasa' al owc' chartspace1 SOLO de las filas 2 a 17 <= -???-



Respuesta Responder a este mensaje
#3 Héctor Miguel
05/05/2005 - 06:30 | Informe spam
hola, fredy !

... lo mismo me sucede en
Sub Actualiza()
Dim Fila As Byte, Col As Byte, Dato
With Spreadsheet1
For Col = 1 To 2
For Fila = 1 To 5
Dato = Worksheets("Hoja1").Cells(Fila, Col)' dato="casa" y en la siguiente linea falla
.Cells(Fila, Col) = Dato [...]



[creo que]... estas usando excel 2000 [o al menos, la version 9 de los office web components] -?-
[si el supuesto anterior es correcto]...
a pesar de que en vba, la propiedad 'por omision' de un objeto 'range' es ->.Value<- ...
[por lo que no requiere de su mencion 'explicita', ya sea como range(...) o cells(...)] ...
=> para los objetos 'range' de los owc [el Spreadsheet1]... SI se requiere una mencion 'explicita' :))
[tendras que]... cambia/complementa la linea donde 'se cargan' al owc desde 'Hoja1'...
de -> .Cells(Fila, Col) = Dato
a -> .Cells(Fila, Col).Value = Dato

comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#4 fredy
05/05/2005 - 22:52 | Informe spam
si Hector eso era muchas gracias!!! :D ... ahora me surge una pregunta, es
que trato de crear una grafica con una macro que ya tenia pero ahora en un
Spreadsheet1 pero no me funciona que cambios debo hacerle al codigo pra que
funcione en un Spreadsheet1 este es el codigo que tengo

Sub grafica()
primera = 1
numcampañas = 13
i = 2
valoresx = "=Graf!R" & primera & "C1:R" & primera + numcampañas - 2 & "C1" '
columnas 3 y 4 figura dia y mes

valoresy = "=Graf!R" & primera & "C" & i & ":R" & primera + numcampañas - 2
& "C" & i & ""
Sheets("graf").Cells(1, 1).Select

Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SeriesCollection(1).XValues = valoresx
ActiveChart.SeriesCollection(1).Values = valoresy
'ActiveChart.SeriesCollection(1).Name = nombreest & " : " & titulo & " "
& unidades '"=""IN_CON AFLUENTE"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Graf"
ActiveChart.HasLegend = False

With ActiveChart
.DisplayBlanksAs = xlNotPlotted

.HasTitle = True
.ChartTitle.Characters.Text = "NOMBREEST" & Chr(10) & "descripcion"
.axes(xlCategory, xlPrimary).HasTitle = True
.axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Fecha Ini."
.axes(xlValue, xlPrimary).HasTitle = True
.axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "titulo" & " "
& "unidades"
End With
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False

'ActiveChart.Legend.Select
'Selection.Position = xlTop
With ActiveChart.axes(xlValue).MajorGridlines.Border
.ColorIndex = 15
.Weight = xlHairline
.LineStyle = xlDot
End With


With ActiveChart.axes(xlCategory).TickLabels
.Alignment = xlCenter
.Offset = 100
.Orientation = xlUpward
' .Orientation = xlHorizontal
End With

ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 15
.Weight = xlHairline
.LineStyle = xlContinuous
End With
With Selection.Interior
.ColorIndex = 19
.PatternColorIndex = 1
.Pattern = xlSolid
End With

ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlHairline
.LineStyle = xlNone
End With
With Selection.Interior
.ColorIndex = 47
.Pattern = xlSolid
End With
ActiveChart.SeriesCollection(1).DataLabels.Select
With Selection
' .HorizontalAlignment = xlCenter
' .VerticalAlignment = xlCenter
' .Position = xlLabelPositionOutsideEnd
.Orientation = xlUpward
End With

ActiveChart.ChartArea.Select
With Selection.Border
.Weight = 1
.LineStyle = 0
End With
With Selection.Interior
.ColorIndex = 19
.PatternColorIndex = 1
.Pattern = 1
End With

ActiveChart.axes(xlCategory).Select
With Selection.Border
.ColorIndex = 15
.Weight = xlHairline
.LineStyle = xlContinuous
End With
ActiveChart.axes(xlValue).Select
With Selection.Border
.ColorIndex = 15
.Weight = xlHairline
.LineStyle = xlContinuous
End With

With Sheets("Graf").DrawingObjects()
.Placement = xlFreeFloating
.PrintObject = True
End With

End Sub




"Héctor Miguel" escribió:

hola, fredy !

> ... lo mismo me sucede en
> Sub Actualiza()
> Dim Fila As Byte, Col As Byte, Dato
> With Spreadsheet1
> For Col = 1 To 2
> For Fila = 1 To 5
> Dato = Worksheets("Hoja1").Cells(Fila, Col)' dato="casa" y en la siguiente linea falla
> .Cells(Fila, Col) = Dato [...]

[creo que]... estas usando excel 2000 [o al menos, la version 9 de los office web components] -?-
[si el supuesto anterior es correcto]...
a pesar de que en vba, la propiedad 'por omision' de un objeto 'range' es ->.Value<- ...
[por lo que no requiere de su mencion 'explicita', ya sea como range(...) o cells(...)] ...
=> para los objetos 'range' de los owc [el Spreadsheet1]... SI se requiere una mencion 'explicita' :))
[tendras que]... cambia/complementa la linea donde 'se cargan' al owc desde 'Hoja1'...
de -> .Cells(Fila, Col) = Dato
a -> .Cells(Fila, Col).Value = Dato

comentas?
saludos,
hector.



Respuesta Responder a este mensaje
#5 Héctor Miguel
09/05/2005 - 01:53 | Informe spam
hola, fredy !

... trato de crear una grafica con una macro que ya tenia pero ahora en un Spreadsheet1... que cambios debo hacerle al codigo
[...]



modifique las 'variables' a 'constantes' [para 'facilitarme' la tarea]... 'tendras que'... 'reponerlas' a la hora de la verdad :-(
owc9 NO admite [muchas de] las 'bondades' que se tienen al utilizar los graficos 'integrados' [como hoja u objeto] :-(
[p.e. no se puede establecer el estilo de linea para -la mayoria de- los elementos en graficos]
[ademas] para poder 'encontrar' la trama de color [exacta] que utilizaste en el codigo...
-> puedes utilizar 8 constantes con los nombres basicos de los colores [en ingles] o... toda una 'odisea' HTML :))
aparte de que no hay una 'coincidencia... total' [entre los colores mostrados y los que 'presenta' el excel]...
visita: http://www.lagmonster.org/utilities...icker.html y: http://www.markup.co.nz/colorPicker...o_font.htm
[bueno, como sea, te paso una adaptacion de tu codigo 'normal' para usarlo con los owc9]

si cualquier duda... comentas?
saludos,
hector.
solo he modificado la macro que 'actualiza' ==Sub Actualiza()
Dim Fila As Byte, Col As Byte, Dato
With Spreadsheet1
For Col = 1 To 2
For Fila = 1 To 12
Dato = Worksheets("Hoja1").Cells(Fila, Col)
.Cells(Fila, Col).Value = Dato
.Cells(Fila, Col).NumberFormat = Worksheets("Hoja1").Cells(Fila, Col).NumberFormat
Next
Next
End With
With ChartSpace1
.Clear
Set Cc = .Constants
Set .DataSource = Me.Spreadsheet1
.Interior.Color = &HCCFFFF
.HasChartSpaceTitle = True
.ChartSpaceTitle.Caption = "Nombre Est Descripcion"
.ChartSpaceTitle.Font.Bold = True
.HasChartSpaceLegend = True
.Charts.Add
With .Charts(0)
.Type = Cc.chChartTypeColumnClustered
.SetData Cc.chDimSeriesNames, Cc.chDataLiteral, "Serie1"
.Interior.Color = &HCCFFFF
.PlotArea.Interior.Color = &HCCFFFF
.SetData Cc.chDimCategories, 0, "a1:a12"
With .Axes(Cc.chAxisPositionLeft)
.HasTitle = True
With .Title
.Caption = "Título Unidades"
.Font.Bold = True
End With
End With
With .Axes(Cc.chAxisPositionBottom)
.HasTitle = True
With .Title
.Caption = "Fecha Ini"
.Font.Bold = True
End With
End With
With .SeriesCollection(0)
.SetData Cc.chDimValues, 0, "b1:b12"
.Interior.Color = "Blue"
With .DataLabelsCollection.Add
.HasValue = True
End With
End With
End With
End With
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida