Saltar al contenido

Error al seleccionar una fila luego de encontrar un valor por el metodo .find


Recommended Posts

publicado

Private Sub ListadeBusqueda_DblClick(ByVal Cancel As MSForms.ReturnBoolean)


 If Me.ListadeBusqueda.ListIndex <> -1 Then
    CIdAutomatico = ListadeBusqueda.Column(0) 'A
    CProvincia = ListadeBusqueda.Column(1) 'D
    CEspecie = ListadeBusqueda.Column(2) 'N
    CTipodeRegistro = ListadeBusqueda.Column(3) 'K
    CMotivo = ListadeBusqueda.Column(4) 'L
    CSitio = ListadeBusqueda.Column(5) 'E
    
valor_buscado = Me.CIdAutomatico.Value
ufila = Sheets("BDCapturasMuertos").Range("A" & Rows.Count).End(xlUp).row


    
    With Sheets("BDCapturasMuertos").Range("A2:A" & ufila)
        Set filaseleccionada = Range("A2:A" & ufila).Find(valor_buscado, LookAt:=xlWhole)
        lineanueva = filaseleccionada.row
        
        CPAIS.Value = .Range("C" & linea) ' ME PAIS
        
        If ECapturasoMuertos.CPAIS = "" Then
        CPAIS.AddItem ("Argentina")
        CPAIS.AddItem ("Brasil")
        CPAIS.AddItem ("Paraguay")
        CPAIS.AddItem ("Chile")
        CPAIS.AddItem ("Uruguay")
        End If
        
        CProvincia.Value = .Range("D" & linea) ' ME PAIS
        
        If CProvincia = "" Then
        Set provincia = Worksheets("Variables").Range("F2:F26")
 
        For Each celda In provincia
        CProvincia.AddItem celda.Value
        Next celda
        End If

        CRuta.Value = .Range("F" & linea)
        Ckm.Value = .Range("G" & linea)
        CLatitud.Value = .Range("H" & linea)
        CLongitud.Value = .Range("I" & linea)
        Cfecharesgitro.Value = .Range("J" & linea)
        CDestino.Value = .Range("M" & linea)
        CnroIndividuos.Value = .Range("O" & linea)
    
        CMuestras.Value = .Range("P" & linea)
        If CMuestras = "" Then
        CMuestras.AddItem ("Si")
        CMuestras.AddItem ("No")
        End If

        CFotos.Value = .Range("Q" & linea)
         If CFotos = "" Then
         CFotos.AddItem ("Si")
        CFotos.AddItem ("No")
        End If
    
        CSexo.Value = .Range("R" & linea)
        If CSexo = "" Then
        CSexo.AddItem ("Hembra")
         CSexo.AddItem ("Macho")
        CSexo.AddItem ("Desconocido")
        End If
    
        CEdad.Value = .Range("S" & linea)
        If CEdad = "" Then
        CEdad.AddItem ("Cachorro")
        CEdad.AddItem ("Juvenil")
        CEdad.AddItem ("Adulto")
        End If
    
        If CMotivo.Value = "" Then
        Set causas = Worksheets("Variables").Range("n2:n7")
 
        For Each celda In causas
        CMotivo.AddItem celda.Value
        Next celda
        End If
    
        If CDestino.Value = "" Then
    
        CDestino.AddItem ("Liberado en el lugar con Collar")
        CDestino.AddItem ("Liberado en el lugar sin Collar")
        CDestino.AddItem ("Traslocado")
        CDestino.AddItem ("Llevado a cautiverio")
        CDestino.AddItem ("Muestras")
       CDestino.AddItem ("No Corresponde")
       End If
       
       
       If .CEspecie.Value = "" Then
       Set nombreCientifico = Worksheets("Variables").Range("c2:c214")
    
       For Each celda In nombreCientifico
       CEspecie.AddItem celda.Value
       Next celda
       End If
       
       
       If CTipodeRegistro.Value = "" Then
       CFotos.AddItem ("Captura")
       CFotos.AddItem ("Muerto")
       End If
       
       CcreadorRegistro.Value = .Range("T" & linea)
       CresponsableRegistro.Value = .Range("U" & linea)
       Cinstitucion.Value = .Range("V" & linea)
       CLinkFoto.Value = .Range("X" & linea)
       CLinkPlanilla.Value = .Range("Y" & linea)
       CObservaciones.Value = .Range("Z" & linea)
       
       
       If CUso.Value = "" Then
       CUso.AddItem ("Uso Libre")
       CUso.AddItem ("Uso Reservado")
       End If
    
          
End With

   Else
   MsgBox "Debe seleccionar un registro de la lista para Editar o Modificar los datos", vbExclamation, "Ciencia Colectiva"

End If

application.ScreenUpdating = False

End Sub

 

Hola a todos como estan? parece que excel no me quiere ultimamente porque me esta haciendo volverme loca a cada rato.

les comparto el codigo, que siempre uso para buscar en un listbox un valor ,  hacer dobleclick sobre un registro y editarlo. Para editarlo me traigo algunos datos del listbox y otros tengo que buscarlos en la hoja. Siempre funciono y ahora no y no entiendo por que...


    
    With Sheets("BDCapturasMuertos").Range("A2:A" & ufila)
        Set filaseleccionada = Range("A2:A" & ufila).Find(valor_buscado, LookAt:=xlWhole)
        lineanueva = filaseleccionada.row < = AQUI ME DA ERROR...

El resto funciona me carga en los textbox correspondientes el valor del elementos seleccionado en el listbox pero no me trae los otros datos de la hoja...

seguramente es un error muy **maravilloso**, pero ya llevo 6 horas en esa linea y no le encuentro el problema..

me pueden ayudar por favor, estoy tan mareada ya con esto que no se que hacer 
        

CC_capturasejemeplo.xlsm

publicado

Si el rango es el resultado de una fórmula, hay que especificar el parámetro LookIn en el Find.

También te habías olvidado de calificar el rango, el With creo que estaba incorrecto, al igual que el nombre de la variable de la fila.

Creo que la cosa va por ahí.

    With Sheets("BDCapturasMuertos")
        Set filaseleccionada = .Range("A2:A" & ufila).Find(What:=valor_buscado, LookIn:=xlValues, LookAt:=xlWhole)
        linea = filaseleccionada.row

 

publicado
Hace 2 horas, Antoni dijo:

Si el rango es el resultado de una fórmula, hay que especificar el parámetro LookIn en el Find.

También te habías olvidado de calificar el rango, el With creo que estaba incorrecto, al igual que el nombre de la variable de la fila.

Creo que la cosa va por ahí.

    With Sheets("BDCapturasMuertos")
        Set filaseleccionada = .Range("A2:A" & ufila).Find(What:=valor_buscado, LookIn:=xlValues, LookAt:=xlWhole)
        linea = filaseleccionada.row

 

? que buen dato Antoni,  mil gracias... por eso me parecia que estaba loca porque en otro formulario si me funcionaba el mismo codigo... pero en este no... y no entendia porque si era exactamente igual. El punto es que en el otro formulario el rango es una lista de nombres no hay formulas aplicadas alli ... igual ni me hubiera imaginado que era eso.!!!?

tu sabes que en el otro formulario tengo tambien asi:

"With Sheets("BDCapturasMuertos").Range("A2:A" & ufila)
        Set filaseleccionada = Range("A2:A" & ufila).Find(valor_buscado, LookAt:=xlWhole) 

Sin el "." antes del range y funciona igual... pero por las dudas que se rompa en algun momento lo voy a corregir ahi tambien..

Pense que excel se estaba enseñando conmigo, porque ultimamente los codigos que siempre uso, en el algun punto se me rompen y no logro detectar porque...

 

Muchisimas gracias Antoni por iluminarme la vista!

 

publicado
Cita

Sin el "." antes del range y funciona igual... pero por las dudas que se rompa en algun momento lo voy a corregir ahi tambien..

Si no calificas el rango se asume la hoja activa, mientras esta sea la que quieres, bien, pero si activas otra hoja, dejará de funcionar, además, si utilizas With es para calificar el rango, si no, ¿Qué sentido tiene?

publicado
Hace 4 horas, Antoni dijo:

Si no calificas el rango se asume la hoja activa, mientras esta sea la que quieres, bien, pero si activas otra hoja, dejará de funcionar, además, si utilizas With es para calificar el rango, si no, ¿Qué sentido tiene?

tienes toda la razon Antoni, no me habia dado cuenta de ello. 

Muchisimas gracias lo tendre en cuenta de ahora en mas. porque es cierto quizas en el momento funciona, pero al cambiar de hoja activa va a generar un error..

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.