Cambiar celda para uso de autofiltro en visual basic

Tengo este código

Private Sub Worksheet_Change(ByVal Target As Range)    If Target.Address(False, False) = "B2" Then        Application.ScreenUpdating = False        ActiveSheet.Unprotect "28021990"        If ActiveSheet.FilterMode Then ShowAllData        Application.EnableEvents = False        Target.Value = "*" & Target.Value & "*"        Application.EnableEvents = True        'desactivamos la actualizacion de la pantalla, es decir ocultamos lo que la macro hace        Application.ScreenUpdating = False        'si existe algun error de uso lo ignora o salta al siguiente error        On Error Resume Next        'BD dinamica lista para efectuar el filtro avanzado en el mismo lugar, desde B1 hasta D2        u = Range("B" & Rows.Count).End(xlUp).Row        Range("B4:E" & u).AdvancedFilter 1, _        Range("B1").CurrentRegion        'autoajusta toda fila usada        Cells.Rows.AutoFit        'autoajusta toda columna usada        Cells.Columns.AutoFit        'activamos la actualización de la pantalla        Application.ScreenUpdating = True              ActiveSheet.Protect "28021990"              Range("B2").Select    End IfEnd Sub

entonces tengo 2 colomna A y B

En la A tengo códigos y en la B tengo nombre de productos.

Al aplicar ese código tengo que poner en B2 el nombre del producto para luego seleccionar en la col. A su código y este me lo arroje en otra hoja..

Mi problema esta en que en vez de seleccionar la columna A yo pueda seleccionar en la col. B.. (lo puedo hacer) pero al poner en B2 el nombre este ya no me hace el filtro

¿Cómo lo hago?

1 respuesta

Respuesta
1

Te anexo el código para este caso

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Act.Por.Dante Amor
    If Intersect(Target, Columns("B")) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target.Row < 5 Then Exit Sub
    cantidad = InputBox("Si estás seguro, captura la cantidad:", "Seleccionaste: " & Range("B" & Target.Row))
    If cantidad = 0 Or cantidad = "" Then Exit Sub
    Application.ScreenUpdating = False
    existe = False
    '
    Set h2 = Sheets("NUEVO SERVICIO A DOMICILIO")
    For I = 18 To 24
        If h2.Cells(I, "F") = "" Then
            existe = True
            Exit For
        End If
    Next
    If existe = False Then
        MsgBox "Ya no hay filas para ingresar productos.", vbCritical, "ERROR"
        Exit Sub
    End If
    'desprotejo
    h2.Unprotect "28021990"
    h2.Cells(I, "G") = Cells(Target.Row, "B") 'producto
    h2.Cells(I, "L") = Cells(Target.Row, "C") 'precio
    h2.Cells(I, "F") = cantidad
    h2.Protect "28021990"
End Sub

También te envié el archivo para que lo pruebes, es el dam3.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas