Problema con la definición de un rango

28/03/2011 - 17:02 por doparx | Informe spam
Soy nuevo en VBA, por lo que quizás la duda sea trivial . Estoy haciendo una macro en Excel 2011 para mac y la idea es hacer una ,macro que se ejecute en la hoja activa, en ella se debe seleccionar un rango que es variable (cambia de tamaño) para ello hice el siguiente codigo:
'Defino variables
Dim vranfila1, vranfila2, vranfila3, vrancol1, vrancol2, vrancol3 As Integer
'busco la celda donde iniciar la función, requiere que no cambien el registro de la celda
Cells.Find(What:="Registro histórico de Nivel de Ayudantes", After:= _
ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False).Activate
'bajo una fila
ActiveCell.Offset(1, 0).Select
'asigno el valor de la fila inicial del rango a una variable
vranfila1 = Trim(Str(ActiveCell.Row))
vrancol1 = Trim(Str(ActiveCell.Column))
'me muevo al final de la lista con datos
Selection.End(xlDown).Select
'asigno el valor de la fila inicial del rango a una variable
vranfila2 = Trim(Str(ActiveCell.Row))
vrancol2 = Trim(Str(ActiveCell.Column))
'asigno el rango e inserto
ActiveSheet.Range(Cells(vranfila1, vrancol1), Cells(vranfila2, vrancol2)).Select
Selection.Copy

Sin embargo me arroja el sgte error:
"Se ha producido el error '1004' en tiempo de ejecución:
Fallo en el método '_default' de objeto 'Range'

Preguntas similare

Leer las respuestas

#1 Leonardo Azpurua
28/03/2011 - 18:16 | Informe spam
"doparx" escribió en el mensaje
news:
Soy nuevo en VBA, por lo que quizás la duda sea trivial . Estoy
haciendo
una macro en Excel 2011 para mac y la idea es hacer una ,macro que
se ejecute
en
la hoja activa, en ella se debe seleccionar un rango que es variable
(cambia
de
tamaño) para ello hice el siguiente codigo:
'Defino variables
Dim vranfila1, vranfila2, vranfila3, vrancol1, vrancol2, vrancol3 As
Integer
'busco la celda donde iniciar la función, requiere que no cambien el
registro de la celda
Cells.Find(What:="Registro histórico de Nivel de Ayudantes",
After:= _
[... codigo suprimido en la cita...]

Sin embargo me arroja el sgte error:
"Se ha producido el error '1004' en tiempo de ejecución:
Fallo en el método '_default' de objeto 'Range'




Hola,

No conozco "Excel 2011". Creo que solo llega hasta el 2010, y yo llego
hasta el 2007 (cuando no me queda más remedio: prefiero el 2003).

Pero por lo que puedo ver, el código está correcto. Si seleccionas la
opción "Depurar" ¿en qué instrucción está el error?.

No tiene nada que ver con el error, pero si nombras las celdas (en el
menú del 2003 tienes Insertar/Nombre) puedes saltarte la búsqueda del
Cell.Find, y escribir directamente x = Sheet("nombreRango"). Todo lo
que lleve a la simplificacion del código es bueno.

Salud!
Respuesta Responder a este mensaje
#2 doparx
29/03/2011 - 05:07 | Informe spam
Leonardo Azpurua escribió el 28/03/2011 18:16 :
"doparx" escribió en el mensaje
news:
Soy nuevo en VBA, por lo que quizás la duda sea trivial . Estoy
haciendo
una macro en Excel 2011 para mac y la idea es hacer una ,macro que
se ejecute
en
la hoja activa, en ella se debe seleccionar un rango que es variable
(cambia
de
tamaño) para ello hice el siguiente codigo:
'Defino variables
Dim vranfila1, vranfila2, vranfila3, vrancol1, vrancol2, vrancol3 As
Integer
'busco la celda donde iniciar la función, requiere que no cambien el
registro de la celda
Cells.Find(What:="Registro histórico de Nivel de Ayudantes",
After:= _
[... codigo suprimido en la cita...]

Sin embargo me arroja el sgte error:
"Se ha producido el error '1004' en tiempo de ejecución:
Fallo en el método '_default' de objeto 'Range'





Hola,

No conozco "Excel 2011". Creo que solo llega hasta el 2010, y yo
llego
hasta el 2007 (cuando no me queda más remedio: prefiero el 2003).

Pero por lo que puedo ver, el código está correcto. Si
seleccionas la
opción "Depurar" ¿en qué instrucción
está el error?.

No tiene nada que ver con el error, pero si nombras las celdas (en el
menú del 2003 tienes Insertar/Nombre) puedes saltarte la búsqueda
del
Cell.Find, y escribir directamente x = Sheet("nombreRango"). Todo lo
que lleve a la simplificacion del código es bueno.

Salud!


La versión 2011 para Mac es muy similar a la versión 2010 para Pc. Al ejecutar la macro esta arroja el error: "Se ha producido el error '1004' en tiempo de ejecución. Fallo en el método '_default' de objeto 'Range'"
Y Al aplicar el depurador me señala esta linea.
ActiveSheet.Range(Cells(vranfila1, vrancol1), Cells(vranfila2, vrancol2)).Select

Respecto a nombrar el rango no es aplicable puesto que la idea es que la macro corra en libros en los cuales el rango no es similar en todos los casos en cuanto a ubicación y tamaño (por eso lo busco) y también para que la macro sea más flexible .
Ojala me puedan ayudar
Respuesta Responder a este mensaje
#3 doparx
29/03/2011 - 07:06 | Informe spam
doparx escribió el 28/03/2011 17:02 :
Soy nuevo en VBA, por lo que quizás la duda sea trivial . Estoy haciendo
una macro en Excel 2011 para mac y la idea es hacer una ,macro que se ejecute
en la hoja activa, en ella se debe seleccionar un rango que es variable (cambia
de tamaño) para ello hice el siguiente codigo:
'Defino variables
Dim vranfila1, vranfila2, vranfila3, vrancol1, vrancol2, vrancol3 As Integer
'busco la celda donde iniciar la función, requiere que no cambien el
registro de la celda
Cells.Find(What:="Registro histórico de Nivel de Ayudantes",
After:= _
ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False).Activate
'bajo una fila
ActiveCell.Offset(1, 0).Select
'asigno el valor de la fila inicial del rango a una variable
vranfila1 = Trim(Str(ActiveCell.Row))
vrancol1 = Trim(Str(ActiveCell.Column))
'me muevo al final de la lista con datos
Selection.End(xlDown).Select
'asigno el valor de la fila inicial del rango a una variable
vranfila2 = Trim(Str(ActiveCell.Row))
vrancol2 = Trim(Str(ActiveCell.Column))
'asigno el rango e inserto
ActiveSheet.Range(Cells(vranfila1, vrancol1), Cells(vranfila2,
vrancol2)).Select
Selection.Copy

Sin embargo me arroja el sgte error:
"Se ha producido el error '1004' en tiempo de ejecución:
Fallo en el método '_default' de objeto 'Range'


Estimados de suerte encontré la solución
no se porque al declarar no más de 2 variables por linea, en algunos casos 1, ahora me reconocía la variable como integer.
Es decir cuando declaraba mas 2 dos variables no las reconocia y las dejaba como una variable general y al aplicar en el comando cells que requiere número marcaba error
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida