** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Buscar en dos campos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Buscar en dos campos

 Responder Responder
Autor
Mensaje
Íñigo Ver desplegable
Nuevo
Nuevo


Unido: 17/Octubre/2023
Localización: Madrid
Estado: Sin conexión
Puntos: 3
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Íñigo Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Buscar en dos campos
    Enviado: 17/Octubre/2023 a las 15:30
¡Hola!

Estoy haciendo el ejercicio de Youtube del siguiente enlace y quiero aprender una cuestión que no explican en el video para mejorar la macro

https://www.youtube.com/watch?v=KH42t9oNvII&list=PLqv8lhx3BTVvdX7NRfg4g24nw2BXbOw29

Como resumen. En el video proponen buscar mediante el código y me gustaría poder buscar por más campos, por ejemplo, por el mail o por el teléfono.

No estoy consiguiendo escribir el código para que pueda buscar en alguno de los tres.

La parte del código que quiero mejorar es la de buscar para habilitar el email y/o el teléfono.

¿Me podéis echar una mano?

¡GRACIAS!

Sub Guardar()
    
    Dim celda As Range
    Dim Fila As Long
    
    If Hoja1.Range("codigo").Value = "" Then
        MsgBox "El código está vacío"
    Else
        Set celda = Hoja2.Range("A:A").Find(what:=Hoja1.Range("codigo").Value, after:=Hoja2.Range("A1"))
        If celda Is Nothing Then
            Fila = Hoja2.Cells(Hoja2.Rows.Count, 1).End(xlUp).Row + 1
            Hoja2.Cells(Fila, 1).Value = Hoja1.Range("codigo").Value
            Hoja2.Cells(Fila, 2).Value = Hoja1.Range("nombre").Value
            Hoja2.Cells(Fila, 3).Value = Hoja1.Range("apellidos").Value
            If IsDate(Hoja1.Range("nacimiento").Value) = False Then
                MsgBox "Formato de fecha incorrecta"
                Eliminar
                Exit Sub
            Else
                Hoja2.Cells(Fila, 4).Value = Hoja1.Range("nacimiento").Value
            End If
            Hoja2.Cells(Fila, 5).Value = Round(Date = Hoja1.Range("Nacimiento").Value / 365, 0)
            Hoja2.Cells(Fila, 6).Value = Hoja1.Range("telefono").Value
            Hoja2.Cells(Fila, 7).Value = Hoja1.Range("email").Value
            
            MsgBox "Cliente guardado"
        Else
            MsgBox "Cliente ya existente"
        End If
            Hoja1.Range("codigo").Value = ""
            Hoja1.Range("nombre").Value = ""
            Hoja1.Range("apellidos").Value = ""
            Hoja1.Range("telefono").Value = ""
            Hoja1.Range("email").Value = ""
            Hoja1.Range("nacimiento").Value = ""
    End If
End Sub

Sub Eliminar()
    Dim celda As Range
    
    If Hoja1.Range("Codigo").Value = "" Then
        MsgBox "Introduce un código"
    Else
        Set celda = Hoja2.Range("A:A").Find(what:=Hoja1.Range("Codigo").Value, after:=Hoja2.Range("A1"))
        If celda Is Nothing Then
            Hoja1.Range("Codigo").Value = ""
            MsgBox "Código no encontrado"
        Else
            celda.EntireRow.Delete
        End If
    End If
End Sub

Sub Limpiar()
    Hoja1.Range("B5").Value = ""
    Hoja1.Range("E5").Value = ""
    Hoja1.Range("B7").Value = ""
    Hoja1.Range("E7").Value = ""
    Hoja1.Range("B9").Value = ""
    Hoja1.Range("E9").Value = ""

End Sub

Sub Buscar()
    
    Dim celda As Range
    
    If Hoja1.Range("Codigo") = "" Then
        MsgBox "Escribe un código para buscar"
    Else
        Set celda = Hoja2.Range("A:A").Find(what:=Hoja1.Range("Codigo").Value, after:=Hoja2.Range("A1"))
        If celda Is Nothing Then
            Hoja1.Range("Codigo") = ""
            MsgBox "Código no introducido"
        Else
            Hoja1.Range("Nombre").Value = celda.Offset(0, 1).Value
            Hoja1.Range("Apellidos").Value = celda.Offset(0, 2).Value
            Hoja1.Range("Nacimiento").Value = celda.Offset(0, 3).Value
            Hoja1.Range("Telefono").Value = celda.Offset(0, 5).Value
            Hoja1.Range("Email").Value = celda.Offset(0, 6).Value
        End If
    End If
End Sub

Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5704
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 17/Octubre/2023 a las 16:38
No abrí el enlace, pero se me figuro que hablas de Excel y te moví el mensaje al foro adecuado.

Saludos.
Arriba
Íñigo Ver desplegable
Nuevo
Nuevo


Unido: 17/Octubre/2023
Localización: Madrid
Estado: Sin conexión
Puntos: 3
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Íñigo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 17/Octubre/2023 a las 17:07
¡Hola!

Lo había colocado en VBA ya que era de la parte del código de la macro en vez de Excel como tal.

Donde vaya a tener mejor respuesta, ahí lo podemos dejar.

¡Gracias!
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable