Uso de la propiedad offset para valores duplicados

De todoexpertos:

Tengo un detalle con una parte de mi código, trabajo con un formulario que trabaja con una función para buscar valores y poder editarlos; esta es la función:

Function NFolioMicro(folio As String) As Integer
Application.ScreenUpdating = False
    Sheets("Trabajo_Micro").Activate
    Range("A2").Activate
    NFolioMicro = 0
    Do While Not IsEmpty(ActiveCell)
        If folio = ActiveCell Then
            NFolioMicro = ActiveCell.Row
        End If
        ActiveCell.Offset(1, 0).Select
    Loop
End Function

Y funciona bien, cuando se trata de un dato, pero cuando en la lista hay "repetidos", los encuentra bien, digo yo, pero al actualizar utiliza el ultimo valor igual de la lista:

A B C

0120-01 CEF negativo

0120-01 URO positivo <---- siempre actualiza este aunque seleccione mediante un combobox el anterior

Utilizo este codigo para dicha tarea:

Private Sub btn_update_Click()
Dim fFolio As Integer
fFolio = NFolioMicro(cbo_Folio.Text)
If fFolio = 0 Then
    Do While Not IsEmpty(ActiveCell)
        ActiveCell.Offset(1, 0).Activate
    Loop
Else
    If fFolio >= 1 Then
    Cells(fFolio - 1, 1).Select
    Else: Cells(fFolio, 1).Select
    End If
End If

ActiveCell = cbo_Folio
ActiveCell.Offset(0, 3) = Me.txt_resultado

Pero no entiendo o no logro hacer que seleccione en "orden", aclarando que soy novato en esto de vba

2 Respuestas

Respuesta

A mí personalmente no me queda claro que intentas hacer, me parece que veo código repetido, también creo que el bucle podría mejorarse. ¿Puedes explicar cual es tu intención y como están estructurados los datos en la hoja?

Pues tengo un formulario mediante el cual lleno una hoja de excel, a la cual previamente le voy rellenando el campo de "folio", para que de este modo pueda tomar los datos el formulario donde estoy teniendo el problema, el detalle que me surge, es que en orden descendente me toma siempre el ultimo valor que tenga el mismo "folio", entonces quiero saber si eso se puede corregir, ahora para recuperar esos datos utilizo un modulo el cual se llama nFolioMicro, que va recogiendo los folios, y según entiendo les va asignando valor del tipo integer para que encuentre la posición de dicho "folio", pero repito me toma el ultimo repetido, podría pasarte una copia de mi archivo para ver si queda más claro, porque siento que no me explico correctamente

Si por favor, pásame una copia para revisarlo. Me suena a muy normal que tome el ultimo repetido, es común que esto pase si la búsqueda es simple, hay que trabajarlo un poco más.

propiedad offset seria este, el formulario se llama frm_microbiologia, te agradezco mucho tiempo

No pude descargar el archivo, quitaste la clave del link, cuando compartes un link de mega no le borres la clave al link, o cópiala y pégala aquí manualmente

dropbox

Enlace sin Clave  no lleva clave

clave QZjJ-M1vl_bAtFuMgsXxQAIw8ZX_T9-I5K3Mwqtkb9s

Enlace con Clave 

a ver si de estos te deja descargar y una disculpa

Ya veo lo que intentas hacer, esta no es la forma en que yo lo haría, a parte de que tienes un problema de concepto. La razón por la que siempre te toma el ultimo folio es obvia, le estas pidiendo que recorra toda la columna hasta que ya no haya mas ningún dato, en cada iteración el NfolioMicro se sobre-escribe y substituye el dato previo ya que NfolioMicro solo puede contener un dato, no una lista de datos, para eso necesitarías usar un Array. De todas formas, lo que quieres hacer no necesita nada de lo que tienes hecho, es muy fácil de conseguir por otra vía con mucho menos código y más sencilla.

Tengo algo de tiempo libre, trataré de arreglarte lo mas que pueda, dame algo de tiempo y en un rato te devuelvo el archivo corregido.

Andy

Quitando la función NfolioMicro, funciona bien. La verdad no entiendo que hace esa función, lo único que tienes que hacer es no usarla. Tal vez yo no entiendo de que se trata, pero yo no veo que haga nada útil, solo te ocasiona el problema.

¡Gracias!, igual no te presiones, lo que yo quería lograr con eso de la función nfolio era que buscara la coincidencia y sobre esa misma poder cargarle los datos a modo de que quedara una base de datos que pudiera consultar, pero me atore en esa parte y como no conozco mucho, pues de lo que voy aprendendo de mis incursiones en google es lo que le voy poniendo, te agradezco mucho el tiempo y tu conocimiento

Respuesta
1

Quizá estos ejemplos te sean de utilidad

https://macrosenexcel.com/como-buscar-en-excel-mientras-se/

https://youtu.be/SWUB1hEXxUw

https://youtu.be/of5u7VXoIk8

Aca tienes mas sobre busqueda de datos en excel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas