Saltar al contenido

Realizar buscar en cualquier hoja en formulario (Combobox) + Botón


Jose BN

Recommended Posts

Hola! Amigos del foro quisiera solicitarles el apoyo para resolver lo siguiente: Lo que pretendo obtener es en un form mediante la selección de un combobox, buscar el valor en todas las hojas (realizar la búsqueda con el botón) y se devuelva un resultado mediante un msgbox mostrando en cual(es) hoja(s) se encontraron el valor. En el tab FindError del formulario es donde deseo realizar el buscador, algo parecido a la siguiente macro:

Sub buscarEnTodasHojas()
    Dim hj As Worksheet
    Dim contExiste As Integer
    Dim busqueda As Range
    Dim res, consulta As String
    
    res = ""
    consulta = Sheets("EEE").Cells(7, 4)
    contExiste = 0
    
    For Each hj In ThisWorkbook.Worksheets
        With hj.UsedRange
            
            Set busqueda = .Cells.Find(what:=consulta)
            
            If Not busqueda Is Nothing Then
                If hj.Name <> "EEE" Then
                    res = res & vbCrLf & hj.Name
                    contExiste = 1
                    Set busqueda = .FindNext(busqueda)
                End If
            End If
        End With
    Next
    
    If contExiste = 0 Then
        MsgBox ("Dato no existe en ninguna hoja")
    Else
        res = "Dato encontrado en las hojas" & vbCrLf & res
        MsgBox res
    End If
    
End Sub

Lo segundo que deseo consultar si es posible aplicar una resta de fecha en textboxs, en el mismo formulario en el tab Date tengo lo siguiente: textbox1 (fechafin) y en Textbox2 ( fecha actual), quisiera saber si es posible con estos datos obtener como resultado en otro TextBox (Resultado  [fechafin-fecha actual/365]) .

 Agradezco cualquier ayuda.

 Saludos

JB

Consulta buscar frm.xlsm

Enlace a comentario
Compartir con otras webs

Hola! gracias @Antoni & @JSDJSD adjunto un archivo y un video para tratar de explicarme mejor, en el fichero tengo la hoja (JBN) en la cual si introduces un valor en la celda D7 y presionas el botón, te devuelve en cual(es) hojas se encontró el valor, deseo hacer lo mismo pero en un formulario, en donde seleccionaría en el combobox el valor y le doy buscar.

Espero haberme explicado bien.

 

consultaforo.xlsm

Enlace a comentario
Compartir con otras webs

Hace 11 horas, Antoni dijo:

Coincido con JSDJSD, no se entiende que quieres hacer.

En cuanto a la segunda pregunta, tan fácil como:

Resultado = (CDatel(FechaFin )- Date) / 365

 

@Antonitomando tú sugerencia algo parece no darme el resultado correcto, podrías darle una revisada.

2Captura.PNG

Consulta fecha.xlsm

Enlace a comentario
Compartir con otras webs

Hace 6 horas, Jose BN dijo:

@Antonitomando tú sugerencia algo parece no darme el resultado correcto, podrías darle una revisada.

2Captura.PNG

Consulta fecha.xlsm 335.64 kB · 0 descargas

@Antoni lo termine de resolver con la ayuda de @avalencia:

UserForm1.TextBox3 = (CDate(UserForm1.TextBox1) - CDate(UserForm1.TextBox2)) / 365

Gracias por todo.

 

Saludos

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0)   Enfatizo que es una idea, es muy probable que hay que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
    • En el ejemplo te he puesto 1 segundo para no hacer largo el gif, cámbialo a tu necesidad
    • Sub RecorrerRangoC() Set hoja = ActiveSheet Set rango = hoja.Range("C2:C" & hoja.Cells(hoja.Rows.Count, "C").End(xlUp).Row) If rango.Cells.Count = 0 Then MsgBox "No hay datos en la columna C.", vbExclamation Exit Sub End If For Each celda In rango.SpecialCells(xlCellTypeVisible) celda.Select Application.Wait Now + TimeValue("00:00:01") Next celda End Sub Prueba y comenta
    • Gracias   Al final funciona con esta formula. =SI.ERROR(C5*BUSCARV(A$2;TablaReparto[#Todo];COINCIDIR(D5;TablaReparto[#Encabezados];));C5) En la celda C5 he puesto la OT. Es similar a lo que me das como solución. ¡Muchas gracias por la ayuda!  
    • Hola, Mejor que subas un archivo que contenga esas fórmulas, indicando qué resultados esperas conseguir. Así ayudas a quien quiera ayudarte; no le obligas a que reproduzca ese modelo, y de paso podrá ver cuál es el objetivo buscado con esa/s fórmula/s. Saludos,
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.