Jump to content
Visor

Otra vez con el error 91 en tiempo de ejecución variable de objeto o bloque with no establecido

Recommended Posts

Saludos amigos del foro, Menciono el tema otra vez porque he venido usando un codigo que funcionaba, pero de pronto aparece el error 91 al ejecutar la macro de buscar...

Bien!!... Tengo un formulario con un  control Tabstrip con el que me ubico en una hoja activa y en el Tabstrip tengo un listbox  (llamado Lbx_QSelec)  que ha filtrado informacion seleccionada

las filas que aparecen en ese listbox debo hacer que se busque una a una en la hoja activa y al encontrar la envie a la hoja2  que tiene cierta distribucion al pegarla.

la macro que uso para buscar y enviar es esta:

Private Sub CmdBuscar_Enviar_a_Hoja2_Click()
'Declaramos variables
Dim Cuenta As Integer
Dim i As Integer
Dim f As Range
Dim busca As Range
Dim filHActiv As Integer

Application.ScreenUpdating = False
filH2 = 10 'Posición inicial de la fila en la Hoja2 
Set f = ActiveSheet.Range("B5", ActiveSheet.Range("B10000").End(xlUp))
    Cuenta = Me.Lbx_Qselec.ListCount
'BUCLE
    For i = 0 To Cuenta - 1
        If Me.Lbx_Qselec.Selected(i) = True Then
          itemSeleccionado = Me.Lbx_Qselec.List(i)
    Set busca = f.Find(itemSeleccionado, LookIn:=xlValues, LookAt:=xlWhole)
      filHActiv = busca.Row '<-------------------------AQUI SE DA EL ERROR 91

            Hoja2.Cells(10, 1) = Me.LbUnid.Caption
            Hoja2.Cells(filH2 + 1, "A") = ActiveSheet.Cells(filHActiv, 2)
            Hoja2.Cells(filH2, "C") = ActiveSheet.Cells(filHActiv, 6)   '
            Hoja2.Cells(filH2 + 1, "C") = ActiveSheet.Cells(filHActiv, 7) ' 
            Hoja2.Cells(filH2 + 2, "C") = ActiveSheet.Cells(filHActiv, 8)
            Hoja2.Cells(filH2 + 3, "C") = ActiveSheet.Cells(filHActiv, 9)
            Hoja2.Cells(filH2 + 4, "C") = ActiveSheet.Cells(filHActiv, 10)
            Hoja2.Cells(filH2 + 5, "C") = ActiveSheet.Cells(filHActiv, 11)

        filH2 = filH2 + 7 
    End If
 Next i
Application.ScreenUpdating = True
End Sub

En ciertos intentos funciona pero no para la hoja activa y en otro intentos aparece el error 91

Debido a que se busca en la columna " B" de la hoja activa,  he revisado todas las hojas que se hacen activas y en esa columna todo esta bien, el resto de los datos también están correctas

he buscado en la web y en este foro veo que de pronto aparece este problema...

En este link se explican los tipos de errores

http://trucosycursos.es/los-codigos-de-error-en-las-macros-vba-de-excel/   

En este hay problemas similares

https://ayudaexcel.com/foro/topic/33483-error-91-isoportable/?tab=comments#comment-195219

Pero en este se muestra que puede haber fallas de sistemas, pero no se si solo sera para VB o tambien aplica a VBA

https://www.solvusoft.com/es/errors/errores-tiempo-de-ejecución/microsoft-corporation/windows-operating-system/error-91-object-variable-or-with-block-variable-not-set/

Si en el codigo esta el error

Será que también puede haber fallas por el sistema???

++++Por favor no me jalen las orejas++++ solo  requiero una aclaración mas

Gracias

Share this post


Link to post
Share on other sites

Pues no subiste el archivo pero me parece (estoy casi seguro en realidad) que el error se da porque el "Find" no encuentra el valor de la variable "itemSeleccionado"  y como no controlas eso (el NO hallar el valor) pues al intentar darle valor a la variable "filHActiv" al no existir la propiedad "Row" del objeto "Busca" pues da el error. Por eso es que a veces te funciona y a veces da error.

Abraham Valencia

Edited by avalencia

Share this post


Link to post
Share on other sites

Bueno gracias Avalencia, he puesto una declaracion al lo que mencionas

Dim itemSeleccionado As Integer

porque pienso que en ese punto es un numero lo que representa esa variable

pero tampoco funciona

 

Share this post


Link to post
Share on other sites

Estimado, no me refería a eso, me refiero a que el dato buscado no existe y por eso da el error.  No puede decirte detalles porque no puedo ver tus datos por obvias razones. Mira, prueba así:

Set busca = f.Find(itemSeleccionado, LookIn:=xlValues, LookAt:=xlWhole)
        If Buscar Is Nothing Then
            MsgBox "No existe"
            Exit Sub
        End If
 filHActiv = busca.Row

Abraham Valencia

 

Share this post


Link to post
Share on other sites

si!!

Gracias Avalencia y Gerson Pineda  de ese modo me di cuenta me dio certeza de que efectivamente algo pasaba en la hoja y no en el sistema, o volver a instalar excel, pues en el link que deje mencionada que malware podrían ser motivo.

los userforms, que ya son muchos, y son tan grandes que al abrirse no dejan ver la hoja activa, y,    se ha estado cambiando cuando en el tabstrip del useform1 selecciono la hoja activa, al cambiar al otro userform se regresaba a otra hoja indicacada al inizializarse.

He desactivado aquello y ahora la hoja activa ya no se mueve a otra hoja, se queda fija y me muestra lo que quiero luego de aplicar la macro del código del post inicial.

El código que me dieron también lo he usado en otras macros, me sirve para validar que en la hoja este lo que en la macro se pide que se busque

Gracias nuevamente

tema solucionado

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 5112 personas - Aprender Excel - Total: 4.7 / 5