¿Cómo agregar un botón de comando "ACEPTAR" en excel que sustituya la tecla enter?

Que tengo, ¿tengo una hoja de excel con un botón para limpiar contenido de las celdas pero quiero agregar otro botón de aceptar para que cuando yo escriba en una celda por ejemplo en D1 en vez de darle enter le de aceptar con el botón?

Extiendo más mi asunto, yo tengo en una hoja una macro para buscar y filtrar datos de otra hoja entonces cuando yo escribo en la celda D1 una palabra y le doy enter con el teclado, me muestra todas las filas donde encontró esa palabra, entonces con el botón limpiar me borra los datos encontrados, pero yo quiero agregarle otro botón al lado del botón limpiar para que al terminar de escribir en la celda D1 le de click en el botón de aceptar. Mi pregunta es como relacionaría el botón de comando con la celda D1 o que código tendría que poner.

1 respuesta

Respuesta
1

¿La macro para "buscar y filtrar" la tienes en los eventos de worksheet?, es decir, después de que escribes en la celda D1 y presionas enter, ¿en automático la macro se ejecuta?

¿Ya no quieres que se ejecute en automático? ¿Lo qué quieres es que se ejecute hasta que presiones el nuevo botón?

Así es Dante, quiero un botón en donde darle Aceptar, o si se puede de las dos formas dándole enter y con el botón

Puedes poner tu macro "buscar y filtrar", tengo que revisar si está utilizando el target para cambiarlo por el rango de la celda.

Este es el código que tengo en la hoja donde tengo la celda D1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim fil As Integer
If Not Intersect(Target, Range("D1")) Is Nothing Then
Application.EnableEvents = False
For Each cel In Target
cel.Value = UCase(cel)
Next
Application.EnableEvents = True
End If
fil = 2
If ActiveCell.Row = 1 And ActiveCell.Column = 4 Then
For i = 3 To 5000
existe = InStr(Sheets("Folios Maritimos").Cells(i, 7), Sheets("Buscar").Range("D1"))
If existe Then
fil = fil + 1
For T = 1 To 16
Sheets("Buscar").Cells(fil, T) = Sheets("Folios Maritimos").Cells(i, T)
Next T
End If
Next i
End If
Sheets("Buscar").Select
Range("D1").Select
End Sub

y con  este  boton de limpio los datos encontrados

Private Sub CommandButton1_Click()
Call Limpiar
End Sub

Para que la macro funcione cuando le das enter, cambia tu macro que tienes en este evento:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Por este evento, en el evento selection, funciona cuando seleccionas la celda, en este evento "Change", funciona cuando modificas la celda "D1"

Private Sub Worksheet_Change(ByVal Target As Range)
'Act.Por.Dante Amor
    Dim fil As Integer
    If Not Intersect(Target, Range("D1")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Application.EnableEvents = False
        Target = UCase(Target)
        fil = 2
        For i = 3 To Sheets("Folios Maritimos").Range("G" & Rows.Count).End(xlUp).Row
            existe = InStr(Sheets("Folios Maritimos").Cells(i, "G"), Sheets("Buscar").Range("D1"))
            If existe Then
                fil = fil + 1
                For T = 1 To 16
                    Sheets("Buscar").Cells(fil, T) = Sheets("Folios Maritimos").Cells(i, T)
                Next T
            End If
        Next i
        Application.EnableEvents = True
    End If
End Sub

Para que funcione en un botón, asigna la siguiente macro en un botón:

Sub Buscar()
'Por.Dante Amor
    If Range("D1") = "" Then Exit Sub
    Range("D1") = UCase(Range("D1"))
    fil = 2
    For i = 3 To Sheets("Folios Maritimos").Range("G" & Rows.Count).End(xlUp).Row
        existe = InStr(Sheets("Folios Maritimos").Cells(i, "G"), Sheets("Buscar").Range("D1"))
        If existe Then
            fil = fil + 1
            For T = 1 To 16
                Sheets("Buscar").Cells(fil, T) = Sheets("Folios Maritimos").Cells(i, T)
            Next T
        End If
    Next i
    Application.EnableEvents = True
End Sub

Te recomiendo que utilices solamente una de las macros.


Saludos. Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas