Actualizar hoja automáticamente según el valor de la celda

Tengo una hoja donde llevo los remitos de los proveedores. Lo que quiero hacer es que según lo que dice la columna "AE" me muestre la columna "AF" o me la oculte.

En la columna "AE" tengo una validación de datos por lista en el cuál se despliegan las opciones "Cheque", "Transferencia" y "Efectivo".

En la columna siguiente ("AF") tengo los bancos.

Quiero hacer que si en la columna "AE" dice "Efectivo" la columna "AF" se oculte ya que como es un pago en efectivo no debe haber intermediarios, o sea bancos.

Pero si dice "Cheque" o "Transferencia" la columna "AF" me la muestre. Ya que el pago se hace mediante cheque o transferencia y se pueda seleccionar el banco del cheque emitido o el banco a donde va dirigida la transferencia.

Intenté hacer lo siguiente pero no se si esta bien o estoy haciendo algo mal porque no me calcula la hoja cuando despliego la opción "Efectivo".

Private Sub worksheets_change(ByVal Target As Row)
If Not Intersect(Target, Columns("AF")) Is Nothing Then
For Each r In Target.Row
If Cells(r.Row, "AE") = "Cheque" And Cells(r.Row, "AE") = "Transferencia" Then
Columns("AF").Hidden = False
ElseIf Cells(r.Row, "AE") = "Efectivo" Then
Columns("AF").Hidden = True
End If
Next
End If

End Sub

2 Respuestas

Respuesta
1

Si necesitas que algo se resuelva cuando cambias el valor en col AE debes evaluar esa columna y no la AF como está en tu macro.

Ahora, estás evaluando 'cada celda' en esa columna... pero ante el primer valor 'efectivo' se va a ocultar TODA la columna...

Si no se resuelve tu problema con el cambio de AF por AE deja una imagen de tu hoja para ver lo que estás intentando realizar.

¡Gracias! Hola Elsa

Ahi la modifique y funciona perfecto pero para lo que quiero hacer me di cuenta que no me va a servir porque es como dice usted. Si oculto la columna para cada vez que diga efectivo, también me va a ocultar las demás columnas. Eso no lo había tenido en cuenta, Muchas gracias por su ayuda.

Tema solucionado.

Saludos

Respuesta
1

Tienes un error en la línea...

"If Cells(r.Row, "AE") = "Cheque" And Cells(r.Row, "AE") = "Transferencia" Then"

En vez de AND tienes que poner OR, no puede ser que ponga a la vez "cheque" y "transferencia"

La condición se cumple si se cumple una de las dos opciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas