runtime error 1004

12/10/2005 - 19:52 por valdesd | Informe spam
recibo este error cunado ejecuto este script en excel version español
mas no cuando lo ejecuto en version ingles, me dicen que es por la
denominacion de las celdas en español que es para linea L y en ingles
es R a continuacion adjunto el script, agradezco quien me pueda ayudar
a resolver esto gracias


Public Function gf_CopyPasteData(s_range As String, s_range2 As String,

i_start_sheet_index As Integer, i_end_sheet_index As Integer) As
Integer
'copies data from sheet one sheet to another sheet
If CInt(Range(s_range).Count) = CInt(Range(s_range2).Count) Then
Sheets(i_start_sheet_index).Range(s_range).Copy _
Destination:=Sheets(i_end_sheet_index).Range(s_range2)
'validation passed, both ranges are of the same size
gf_CopyPasteData = 0
Else
'validation failed, both ranges are a different size
gf_CopyPasteData = 1
End If


End Function

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/10/2005 - 05:06 | Informe spam
hola, valdesd !

... error... este script en excel version español mas no cuando lo ejecuto en version ingles
... dicen que es por la denominacion de las celdas en espa#ol que es para linea L y en ingles es R
... adjunto el script, agradezco quien me pueda ayudar a resolver esto gracias
Public Function gf_CopyPasteData(s_range As String, s_range2 As String, _
i_start_sheet_index As Integer, i_end_sheet_index As Integer) As Integer
'copies data from sheet one sheet to another sheet
If CInt(Range(s_range).Count) = CInt(Range(s_range2).Count) Then
Sheets(i_start_sheet_index).Range(s_range).Copy _
Destination:=Sheets(i_end_sheet_index).Range(s_range2)
'validation passed, both ranges are of the same size
gf_CopyPasteData = 0
Else
'validation failed, both ranges are a different size
gf_CopyPasteData = 1
End If
End Function



1) la funcion que expones es 'llamada' desde codigo y 'recibe' 4 argumentos... algo +/- como lo siguiente:
s_range As String => una cadena de texto que hace referencia al rango de origen o 'a copiar'
s_range2 As String => una cadena de texto que hace referencia al rango de destino o 'a copiar_donde'
i_start_sheet_index As Integer => un numero que indica el indice [o posicion] de la hoja donde esta 'rango_origen'
i_end_sheet_index As Integer => un numero que indica el indice [o posicion] de la hoja donde esta 'rango_destino'

2) lo que no has comentado [tampoco en los foros de ingles]... ES 'como' pasas los argumentos en otras lineas del codigo -???-

3) me suena a que los argumentos 's_range' y 's_range2' los pasas con el estilo de referencia R1C1 [pero no dices 'como'] -?-

4) hasta donde se... cuando 'programas' [en exel-vba] usando estilos de referencia NO 'A1' [seguramente]...
vas a encontrar problemas si tu aplicacion se ejecuta en versiones NO-EUA, puesto que...
en [menu] herramientas / opciones / [ficha] general / [seccion] configuracion -> estilo de referencia...
[segun pais/region/idioma/etc.] algunas aplicaciones utilizan LC [LineaColumna] otras FC [FilaColumna] etc.
si cambias de 'LC' <-> 'FC' <-> 'RC' fallaran cuando se usen en otras pc's [con 'el otro' estilo de notacion]
-> si es posible [es preferible]...
o... usar el estilo de referencia 'A1' o... 'programar' ->en ingles<-... ya que siempre sera un 'estilo' RC [RowColumn]

5) probablemente existan alternativas menos 'engorrosas' que andar 'lidiando' con temas de 'internacionalizacion' :D

si comentas los detalles que se te siguen 'quedando en el tintero' :))

saludos,
hector.
Respuesta Responder a este mensaje
#2 valdesd
14/10/2005 - 14:22 | Informe spam
Saludos Hector muchas gracias por tu respuesta, a continuacion te mando
el script del llamado de la funcion como lo hicieron aqui puesto que el
codigo no lo hice yo si no que me lo asignaron para que lo resolviera

mod_ExcelGlobalFunctions.gf_CopyPasteData("A3:M23", "A" &
CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1)

agradezco en lo que e puedas ayudar para ver si puedo hacer funcionar
esto en ambas versiones, o mejor dicho en todas las versiones ingles,
espanol etc...

agradeciendo de antemano

Daniel Valdes
Respuesta Responder a este mensaje
#3 Héctor Miguel
14/10/2005 - 22:52 | Informe spam
hola, valdesd !

... script del llamado de la funcion como lo hicieron... puesto que el codigo... que me lo asignaron para que lo resolviera
mod_ExcelGlobalFunctions.gf_CopyPasteData("A3:M23", "A" & CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1)
... para ver si puedo hacer funcionar esto en ambas versiones, o mejor dicho en todas las versiones ingles, espanol etc...



te paso unos comentarios con respecto de las pruebas realizadas... 'sin problemas' usando un excel en castellano ;)
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.

1) [aparentemente] la funcion se encuentra en un modulo de codigo que se llama 'mod_ExcelGlobalFunctions' -?-
cosa que no le veo mucho sentido a 'tener que' calificar una llamada a la funcion 'por su modulo' -?-
[a menos que hubiera otras funciones con el mismo nombre en modulos distintos, lo que es tambien poco recomendable] ;)

2) tampoco le veo mayor 'provecho' a efectuar un 'simple' copiado de datos 'pasando' por varias lineas de codigo en una funcion -?-
sobre todo si -siempre- se indica la misma hoja para los rangos 'de origen' y 'destino' y los rangos los 'ajustas' en el codigo :)
[a menos que la situacion sea 'variable'] -?-

3) con relacion a la falla que comentas [el error 1004 en tiempo de ejecucion] no lo he podido 'reproducir' [excel en castellano] :))
aunque no comentas como 'se construye' la variable ->i_chart_row<- :((

4) creando el modulo con el nombre ->mod_ExcelGlobalFunctions<- y 'llamando' a la funcion desde otro modulo, hice las siguientes pruebas:
__ 1 __
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
Res = mod_ExcelGlobalFunctions.gf_CopyPasteData("A3:M23", "A" & _
CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1)

[... otras lineas de tu codigo ...]

__ 2 __
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
mod_ExcelGlobalFunctions.gf_CopyPasteData "A3:M23", "A" & _
CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1

[... otras lineas de tu codigo ...]

__ 3 __
=> SIN 'PASAR' por la funcion 'intermedia' => a menos que comentes 'el uso' por el que 'la usas' :))...
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
With Worksheets(1)
.Range("a3:m23").Copy .Range("a" & i_chart_row) & ":m" & i_chart_row + 20)
End With

[... otras lineas de tu codigo ...]

__ 4 __
=> incluso, si el rango 'destino' SIEMPRE lo ajustas al mismo numero de celdas ...
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
With Worksheets(1)
.Range("a3:m23").Copy .Range("a" & i_chart_row)
End With

[... otras lineas de tu codigo ...]
Respuesta Responder a este mensaje
#4 valdesd
17/10/2005 - 20:10 | Informe spam
Héctor Miguel wrote:
hola, valdesd !

> ... script del llamado de la funcion como lo hicieron... puesto que el codigo... que me lo asignaron para que lo resolviera
> mod_ExcelGlobalFunctions.gf_CopyPasteData("A3:M23", "A" & CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1)
> ... para ver si puedo hacer funcionar esto en ambas versiones, o mejor dicho en todas las versiones ingles, espanol etc...

te paso unos comentarios con respecto de las pruebas realizadas... 'sin problemas' usando un excel en castellano ;)
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.

1) [aparentemente] la funcion se encuentra en un modulo de codigo que se llama 'mod_ExcelGlobalFunctions' -?-
cosa que no le veo mucho sentido a 'tener que' calificar una llamada a la funcion 'por su modulo' -?-
[a menos que hubiera otras funciones con el mismo nombre en modulos distintos, lo que es tambien poco recomendable] ;)

2) tampoco le veo mayor 'provecho' a efectuar un 'simple' copiado de datos 'pasando' por varias lineas de codigo en una funcion -?-
sobre todo si -siempre- se indica la misma hoja para los rangos 'de origen' y 'destino' y los rangos los 'ajustas' en el codigo :)
[a menos que la situacion sea 'variable'] -?-

3) con relacion a la falla que comentas [el error 1004 en tiempo de ejecucion] no lo he podido 'reproducir' [excel en castellano] :))
aunque no comentas como 'se construye' la variable ->i_chart_row<- :((

4) creando el modulo con el nombre ->mod_ExcelGlobalFunctions<- y 'llamando' a la funcion desde otro modulo, hice las siguientes pruebas:
__ 1 __
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
Res = mod_ExcelGlobalFunctions.gf_CopyPasteData("A3:M23", "A" & _
CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1)

[... otras lineas de tu codigo ...]

__ 2 __
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
mod_ExcelGlobalFunctions.gf_CopyPasteData "A3:M23", "A" & _
CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1

[... otras lineas de tu codigo ...]

__ 3 __
=> SIN 'PASAR' por la funcion 'intermedia' => a menos que comentes 'el uso' por el que 'la usas' :))...
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
With Worksheets(1)
.Range("a3:m23").Copy .Range("a" & i_chart_row) & ":m" & i_chart_row + 20)
End With

[... otras lineas de tu codigo ...]

__ 4 __
=> incluso, si el rango 'destino' SIEMPRE lo ajustas al mismo numero de celdas ...
[... otras lineas de tu codigo ...]
Dim i_chart_row As Integer
i_chart_row = 12
With Worksheets(1)
.Range("a3:m23").Copy .Range("a" & i_chart_row)
End With

[... otras lineas de tu codigo ...]



Saludos Hector

Disculpa mi ignorancia del tema de macros puesto que yo realmente
programo es en (powerbuilder) y esto es un reporte grafico que se
manda a excel para su muestra, realmente no conozco del codigo de
macros y tan solo un poco de visual basic a continuacion te envio el
llamado completo de la funcion tal cual como esta hecho aqui a ver que
opinion te merece aparte de todas las que ya me haz dado y las cuales
agradezco mucho.

Sub mac_new_graph()
i_chart_row = Range("T1").Value
i_series_count = Range("T2").Value
Range("T1").Value = ""
i_return = mod_ExcelGlobalFunctions.gf_CopyPasteData("A3:M23", "A"
& CStr(i_chart_row) & ":M" & CStr(i_chart_row + 20), 1, 1)
i_last_chart = ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(i_last_chart).Activate
For i_series_index = 1 To i_series_count Step 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i_series_index).XValues = "=" &
Sheets(1).Name & "!R" & CStr(i_chart_row + 21) & "C2:R" &
CStr(i_chart_row + 21) & "C13"
ActiveChart.SeriesCollection(i_series_index).Values = "=" &
Sheets(1).Name & "!R" & CStr((i_chart_row + 21) + i_series_index) &
"C2:R" & CStr((i_chart_row + 21) + i_series_index) & "C13"
ActiveChart.SeriesCollection(i_series_index).Name = "=" &
Sheets(1).Name & "!R" & CStr((i_chart_row + 21) + i_series_index) &
"C1"
Next i_series_index
'ActiveChart.SeriesCollection.NewSeries
'ActiveChart.SeriesCollection(1).XValues = s_xvalue1
'ActiveChart.SeriesCollection(1).Values = s_value1
'ActiveChart.Legend.Delete
's_xvalues = "=" & Sheets(i).Name & "!R25C2:R25C13"
's_values = "=" & Sheets(i).Name & "!R26C2:R26C13"
's_Name = "=" & Sheets(i).Name & "!R26C1"
End Sub

Saludos y gracias nuevamente.
Daniel Valdes
Respuesta Responder a este mensaje
#5 Héctor Miguel
18/10/2005 - 07:03 | Informe spam
hola, Daniel !

... es un reporte grafico que se manda a excel para su muestra
... no conozco del codigo de macros y tan solo un poco de visual basic
... envio el llamado completo de la funcion tal cual como esta hecho aqui [...]



no me queda muy claro si los rangos 'nuevos' y la grafica son parte de la misma hoja -?-
si es asi... podrias simplificar el codigo [y ahorrarte los detalles de R-Row/L-Linea/F-Fila]
prueba con la siguiente macro y... comentas lo que le vaya 'doliendo' ? :))

saludos,
hector.

en un modulo de codigo 'normal' ==Sub AgregaSeriesAlGrafico()
Application.ScreenUpdating = False
Dim Fila As Long
Fila = Range("t1")
Range("a3:m23").Copy Range("a" & Fila)
Range("a" & Fila).Resize(21, 13).Copy
ActiveSheet.ChartObjects(1).Chart.Paste
Application.CutCopyMode = False
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida