Se ha producido el error 91 en tiempo de ejecución

Tengo un problema con esta macro ya que si me funciona en el archivo que la grabe depurador.xls, pero cuando la quiero utilizar en otros libros como complemento depurador.xla no me funciona
Sub buscarbital()
'
' buscarbital Macro
' Macro grabada el 31/08/2004 por Check Plus
'
'
Workbooks.Open Filename:="G:plazas.xls"
ThisWorkbook.Activate
ActiveCell.FormulaR1C1 = _
"=+VLOOKUP(RC[-1],'G:[plazas.xls]Hoja2'!C1:C2,2,FALSE)"
Range("G2").Select
ThisWorkbook.ActiveSheet.Range("G2").Select
Selection.AutoFill Destination:=Range("G2:G1000")
Range("G2:G1000").Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("G1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="#N/A"
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Selection.End(xlUp).Select
Selection.AutoFilter Field:=7
Selection.AutoFilter
Windows("plazas.xls").Activate
ActiveWindow.Close
ThisWorkbook.Activate
Range("G2").Select
End Sub
ThisWorkbook. ActiveSheet. Range("G2").Select esta parte es la que me pone en amarillo el depurador
y este es el mensaje de la ayuda
variable de objeto o bloque with no establecido
La variable de objeto o la variable de bloque With no está establecida (Error 91)
Existen dos pasos para crear una variable de objeto. Primero, debe declarar la variable de objeto y a continuación, debe asignar una referencia válida a dicha variable de objeto, para lo cual utiliza la instrucción Set. Igualmente, un bloque With...End With se debe inicializar ejecutando el punto de entrada de la instrucción With. Las causas y posibles soluciones de este error son las siguientes:
Intentó utilizar una variable de objeto que todavía no está haciendo referencia a un objeto válido.
Especifique o vuelva a especificar una referencia para la variable de objeto. Por ejemplo, si se omitiera la instrucción Set en el código siguiente, se generaría un error en la referencia a MiObjeto:
Dim MyObject As Object ' Crea una variable de objeto.
Set MyObject = Sheets(1) ' Crea referencia de objeto válida.
MyCount = MyObject.Count ' Asigna valor Cuenta a MiCuenta
Intentó utilizar una variable de objeto que se ha establecido como Nothing.
Set MyObject = Nothing ' Libera el objeto.
MyCount = MyObject.Count ' Hace referencia a un objeto liberado.
Vuelva a especificar una referencia para la variable de objeto. Por ejemplo, utilice una nueva instrucción Set para establecer una nueva referencia para el objeto.
El objeto es válido, pero no se estableció porque la biblioteca de objetos donde está descrito no está seleccionada en el cuadro de diálogo Referencias.
Seleccione la biblioteca de objetos en el cuadro de diálogo Agregar referencias.
El destino de una instrucción GoTo está dentro de un bloque With.
No debe saltar al interior de un bloque With. Asegúrese de que el bloque se inicializa ejecutando el punto de entrada indicado por la instrucción With.
Especificó una línea incluida dentro de un bloque With al elegir el comando Establecer siguiente instrucción.
El bloque With se debe inicializar ejecutando la instrucción With.
Si desea más información, seleccione el tema en cuestión y presione F1 (en Windows) o Ayuda (en Macintosh).
4

4 Respuestas

1.050 pts. Experiencia en el desarrollo e implementación de...
Te sugiero grabar esta misma macro en el libro de macros personal.xls
Ahora me aparece este error
Y me pone en amarillo lo sig Selection.AutoFilter
Fallo en el método auto filter de la clase range
Error en la macro
Hay un error en la macro que se estaba ejecutando. El método especificado no puede utilizarse en el objeto especificado por alguno de los siguientes motivos:
Un argumento contiene un valor que no es válido. Una causa habitual de este problema es intentar tener acceso a un objeto que no existe; por ejemplo, al Workbooks(5) cuando sólo hay 3 libros abiertos.
No puede utilizarse el método en el contexto aplicado. Por ejemplo, algunos métodos del objeto Rango requieren que el rango contenga datos. Si el rango no contiene ningún dato, el método fallará.
Error externo, como fallo al leer o escribir desde un archivo.
Para obtener más información sobre cómo utilizar el método, busque el nombre del mismo en la Ayuda de Visual Basic.
Por tu ayuda gracias
Debes dejar solo una instrucción de autofiltro, para el rango de autofiltro selecciona el rango completo de la columna G.
El ultimo autofilter no es necesario
Buscarbital Macro
' Macro grabada el 31/08/2004 por Check Plus
'
'
Workbooks.Open Filename:="G:plazas.xls"
ThisWorkbook.Activate
ActiveCell.FormulaR1C1 = _
"=+VLOOKUP(RC[-1],'G:[plazas.xls]Hoja2'!C1:C2,2,FALSE)"
Range("G2").Select
ThisWorkbook.ActiveSheet.Range("G2").Select
Selection.AutoFill Destination:=Range("G2:G1000")
Range("G2:G1000").Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("G2:G1000").Select
Selection.AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="#N/A"
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Selection.End(xlUp).Select
Selection.AutoFilter Field:=7
Windows("plazas.xls").Activate
ActiveWindow.Close
ThisWorkbook.Activate
Range("G2").Select
End Sub
14.650 pts.
Todos los Range("celda").algo, antecédelos de un Activesheet.Range;
Me cuentas si te funciona, estaré atento y si no, buscaremos otra manera
Ahora me aparece este error
Y me pone en amarillo lo sig Selection.AutoFilter
Fallo en el método auto filter de la clase range
Error en la macro
Hay un error en la macro que se estaba ejecutando. El método especificado no puede utilizarse en el objeto especificado por alguno de los siguientes motivos:
Un argumento contiene un valor que no es válido. Una causa habitual de este problema es intentar tener acceso a un objeto que no existe; por ejemplo, al Workbooks(5) cuando sólo hay 3 libros abiertos.
No puede utilizarse el método en el contexto aplicado. Por ejemplo, algunos métodos del objeto Rango requieren que el rango contenga datos. Si el rango no contiene ningún dato, el método fallará.
Error externo, como fallo al leer o escribir desde un archivo.
Para obtener más información sobre cómo utilizar el método, busque el nombre del mismo en la Ayuda de Visual Basic.
Por tu ayuda gracias
Estos fueron los cambios que hice en con Activesheet.Range
Private Sub buscarbital()
'
' buscarbital Macro
' Macro grabada el 01/09/2004 por Check Plus
'
'
Workbooks.Open Filename:="G:plazas.xls"
ThisWorkbook.Activate
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],[plazas.xls]Hoja2!C1:C2,2,0)"
ActiveSheet.Range("G2").Select
Selection.AutoFill Destination:=ActiveSheet.Range("G2:G255")
ActiveSheet.Range("G2:G255").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Range("G1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="#N/A"
ActiveSheet.Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Selection.End(xlUp).Select
Selection.AutoFilter Field:=7
Selection.AutoFilter
Windows("plazas.xls").Activate
ActiveWindow.Close
End Sub
Te faltó esta línea
Range(Selection, Selection.End(xlDown)).Select
5.225 pts.
Lo lamento, pregunta a otro experto.
200 pts.
Tu macro esta corrompido tendrás que hacerlo de nuevo, pero realízalo paso a paso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas