Supuse que querrá poner el precio más reciente en una celda y posiblemente mostrar la fecha en que ocurrió. Puede hacer esto con el código VBA.
Tal como está escrito, se activa un sub evento Evento Worksheet_BeforeDoubleClick cuando hace doble clic en una celda que contiene un número de elemento (o posiblemente una descripción). Ese sub evento luego llama a la función MostRecentPrice definida por el usuario que busca en las otras hojas de trabajo el mismo número de artículo. Devuelve una matriz de dos elementos que contiene el precio más reciente y la fecha correspondiente. El sub evento Evento Worksheet_BeforeDoubleClick coloca el precio más reciente en la columna de precios y muestra un cuadro de mensaje con la fecha asociada.
El código asume que la fecha de la factura está en la celda A1, los números de artículo están en la columna C y los precios en la columna E. Comenté el código para que pueda ver dónde se deben hacer cambios para diferentes supuestos.
- ¿Cuáles crees que son los principales factores que hacen que las startups fallen?
- ¿Por qué nos centramos tanto en los presupuestos gubernamentales en lugar de la eficiencia y productividad de los costos gubernamentales?
- ¿Cuál es tu marca favorita?
- ¿Cuáles son algunas formas efectivas de encontrar negocios potenciales en LinkedIn?
- Cómo recaudar $ 8000 en dos semanas para comenzar un negocio
Tenga en cuenta que el sub Worksheet_BeforeDoubleClick debe instalarse en el panel de códigos de la nueva hoja de facturas. No funcionará en absoluto si lo pones en otro lugar. Haga clic con el botón derecho en la pestaña de la hoja y elija Ver código … para mostrar ese panel de código. La función definida por el usuario MostRecentPrice puede instalarse en el mismo lugar, pero la mayoría de los programadores la colocarían en una hoja de módulo normal.
Tenga en cuenta también que debe guardar el libro con la extensión de archivo .xlsm. Guardar el libro con una extensión .xlsx eliminará las macros, y ¿cuál sería la diversión en eso?
‘Este código debe ir en el panel de código de la hoja de trabajo que se está buscando para hacer doble clic. ¡No funcionará si se instala en otro lugar!
Private Sub Worksheet_BeforeDoubleClick (Por valor de objetivo como rango, Cancelar como booleano)
‘Se activa cuando hace doble clic en una celda con un número de artículo o una descripción. _ _
Pone el precio más reciente en la columna de precios y muestra el cuadro de mensaje con la fecha más reciente.
Dim PriceColumn As String
Dim ItemColumn As String
Dim Price como variante
PriceColumn = “E” ‘Los precios van aquí
ItemColumn = “C” ‘El número de artículo o la descripción van aquí
Si no se cruza (Target, Me.Columns (ItemColumn)) no es nada entonces
Si Target.Value “” Entonces
Precio = Precio más reciente (objetivo)
Intersecar (Target.EntireRow, Me.Columns (PriceColumn)). Valor = Precio (0)
If Price (1) “” Then MsgBox “El precio más reciente ocurrió en” & CDate (Price (1))
Cancelar = Verdadero ‘Desactiva temporalmente el significado normal de la acción de doble clic
Terminara si
Terminara si
End Sub
Función MostRecentPrice (artículo como rango) como variante
‘Busca en todas las hojas de trabajo del libro de trabajo el precio y la fecha más recientes para el artículo
Dim ws As Worksheet
Dim rg As Range
Dim LatestDate As Date, wsDate As Date
Dim dateAddress As String, PriceColumn As String
Dim Price como variante
dateAddress = “A1” ‘La fecha de la factura se encontrará en esta celda
PriceColumn = “E” ‘El precio se encontrará en esta columna
If Item.Value “” Entonces
Para cada ws en Item.Parent.Parent.Worksheets
Seleccionar caso con nombre
Case Item.Parent.Name, “Data” ‘No busque en estas hojas de trabajo
Caso diferente
Establecer rg = Nada
Establezca rg = ws.Columns (Item.Column) .Find (Item.Value, LookAt: = xlWhole, MatchCase: = False)
Si no rg no es nada entonces
wsDate = CDate (ws.Range (dateAddress))
Si wsDate> LatestDate entonces
Precio = Intersecar (rg.EntireRow, ws.Columns (PriceColumn)). Valor
LatestDate = wsDate
Terminara si
Terminara si
Seleccionar final
próximo
Terminara si
If LatestDate> 0 entonces
MostRecentPrice = Array (Precio, LatestDate)
Más
MostRecentPrice = Array (“No encontrado”, “”)
Terminara si
Función final