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
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
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