Saltar al contenido

Evitar autofiltros utilizando CONTAR SI en Msgbox


Gerson Pineda

Recommended Posts

Hola a todos!

Imaginemos que trabajamos con una BD y que en esta se lleva un Tracking Report (Reporte de seguimiento) por cada dia, y en el cual se controla un inventario (como maquinas de costura, como ejemplo) y estas se alquilan/rentan, ya sea por dias, semanas, meses etc... y suponiendo que dicho inventario es enorme:)

Pues bien he elaboarado un ejemplo con 3 hojas, para poder utilizar esta macro de "evento", la cual se activa al darle doble click en cualquiera de las columnas "E" o "F" y que siempre y cuando existan datos, aparecera una ventana indicandonos la cantidad de inventario en tal localidad de tal cliente, tambien mencionar que cada vez que le demos doble click, en la celda adyacente se escribira automaticamente lo que aparece en el "msgbox"

Y bueno con esto evitamos (la fatiga) de hacer uso del autofiltro para ver la cantidad de determinada localidad o algun cliente:), espero comprendan el objetivo de esta macro

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Dim rango As Range
Dim uf As Long

'desactivar la actualizacion de la pantalla
Application.ScreenUpdating = False
'saltar error
On Error Resume Next
'buscamos la ultima celda ocupada
uf = Range("E" & Rows.Count).End(xlUp).Row
'marcar el rango dinamico
Set rango = Range("E2:F" & uf)
'contar segun la celda activa
unidades = WorksheetFunction.CountIf(rango, Target.Value)
'limpiar si hay mas de una celda con datos
If WorksheetFunction.CountA(Range("G2:G" & uf)) > 0 Then
Range("G2:G" & uf).Clear
End If

'correr la macro si es la columna E
If Target.Column = 6 Then
'si hay datos contar inventario
If Target.Value <> "" Then
'escribir en celda adyacente
ActiveCell.Offset(, 1) = "Existen " & unidades & _
" unidades a cuenta de cliente " & ActiveCell.Value
ActiveCell.Offset(, 1).HorizontalAlignment = xlLeft
'presentar en msgbox
MsgBox "Existen " & unidades & " unidades a cuenta de cliente " _
& ActiveCell.Value, vbOKOnly, "Inventario en Honduras " _
& "(" & ActiveSheet.Name & ")"
End If
Cells.Columns.AutoFit
'pulsar escape
SendKeys "{ESC}"
End If
'correr la macro si es la columna F
If Target.Column = 5 Then
'si hay datos contar inventario
If Target.Value <> "" Then
'escribir en celda adyacente
ActiveCell.Offset(, 2) = "Existen " & unidades & _
" unidades en " & ActiveCell.Value
ActiveCell.Offset(, 2).HorizontalAlignment = xlLeft
'presentar en msgbox
MsgBox "Existen " & unidades & " unidades en " & ActiveCell.Value _
& " a cuenta de cliente " & ActiveCell.Offset(, 1).Value, _
vbOKOnly, "Inventario en Honduras " & "(" & ActiveSheet.Name & ")"
End If
Cells.Columns.AutoFit
'pulsar escape
SendKeys "{ESC}"
End If

Set rango = Nothing

Application.ScreenUpdating = True

End Sub[/PHP]

Y como siempre adjunto un archivo para pruebas

Saludos desde Honduras

Evitar filtros utilizando CONTAR SI + Msgbox.zip

Evitar filtros utilizando CONTAR SI + Msgbox modificado.zip

Enlace a comentario
Compartir con otras webs

Hola amigo, es un placer coincidir nuevamente contigo, ya hacía tiempo que no pasaba, pero claro los cambios horarios, solo que hoy no puedo dormir, en fin, bueno quería comentarte que me parece muy buena la idea, pero sobre todo al echarle un vistazo quiero agradecerte además lo que has hecho con el código, es decir, explicar dentro del mismo lo que es cada cosa, que sin duda para gente como yo, que como sabes de macros somos k.esimo.menor, nos ayudan muchísimo a empezar a entender este inmenso mundo de los códigos.

Un abrazo, y como imagino que ya pronto iras a dormir, que descanses, Germán-

Enlace a comentario
Compartir con otras webs

Hola German

Para mi es un placer coincidir contigo nuevamente y gracias por tus palabras, mencionarte que mis aportes trato de explicarlos ya que como sabemos aqui entran expertos, novatos, profesionales, avanzados etc... y pues todos no lo saben todo jeje

Y explique el codigo a peticion de un amigo llamado Luis y a muchos mas (como tu) que creen/piensan que no deben solicitarlo, esta macro se pueden adaptar a otras de evento, como selectionchange, change etc... con solo unos leves cambios y listo, pero me parece mas efectiva con el doble click, ya que este metodo es poco utilizado dentro de las hojas de Excel

Un abrazo, y como imagino que ya pronto iras a dormir, que descanses, Germán-

Gracias amigo, "BUENAS NOCHES" y buenos dias para ti tambien

Saludos

Enlace a comentario
Compartir con otras webs

Crear una cuenta o conéctate para comentar

Necesitas ser usuario para poder dejar un comentario

Crear una cuenta

Registrarse para una nueva cuenta en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectarse

¿Ya tienes una cuenta? Conéctate aquí.

Conéctate ahora
×
×
  • 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.