Ventana de información al abrir excel

Buenas, estoy trabajando en un libro excel con el cual llevo el stock de la fabrica.
El libro se arma más o menos así:
Columna A: código de articulo
col B: descripcion
col C: stock
Col D: pedidos
Este libro se lo envío todos los días al depto de producción de la fabrica para que confeccione su plan de producción.
Ahora bien, lo que me gustaría es que, en el momento que se abre el libro salte una ventana de alerta que diga algo como "ATENCIÓN: ES ESCASO EL STOCK EN LOS SIGUIENTES ARTÍCULOS: xxxxx ; xxxxx ; ETC..."
Donde las xxxxx serian el código del articulo.
Espero que puedan darme una mano en lo que necesito para hacer esto.
Agradecido de antemano, les dejo cordiales saludos

1 Respuesta

Respuesta
1
Indicame cuales son las celdas que contienen los valores que deseas mostrar en el mensaje de apertura.
Seria algo así:
Código descripción stock pedido
100 CAMISETA 80 100
101 RESIDUO 50 55
102 CONSORCIO 60 40
Como se puede ver, camiseta y residuo hay menos stock que lo pedido así que el mensaje tendría que decir " "ATENCIÓN: ES ESCASO EL STOCK EN LOS SIGUIENTES ARTÍCULOS: 100; 101" (por ejemplo)
Con que indique el código es suficiente, funcionaria solo como una advertencia al depto de producción cuales son los artículos en los que hay que tener en cuenta para fabricar...
Los artículos con los que trabajo son alrededor de 1000, pero no todos están por debajo del stock pedido, más bien no serán más que 10, podría agregar una columna más para distinguir los artículos que me interese más estar atento que otros ¿se comprende?...
Ok.
Entonces has lo siguiente:
Abre el editor de Vba (Teclas ALT+F11)
Al costado izquierdo esta el objeto "ThisWorbook", dale doble click y en al ventana en blanco que te aparecerá pega esto:
Private Sub Workbook_Open()
Dim r As Range
Dim total As Integer
Dim cadena As String
Application.ScreenUpdating = False
total = Application.WorksheetFunction.CountA(Sheets(1).Range("A:A"))
For Each r In Sheets(1).Range("A2" & ":" & "A" & total)
If r.Offset(0, 2) < r.Offset(0, 3) Then cadena = cadena & Chr(13) & "Codigo :" & r.Rows & " Stock= " & r.Offset(0, 2)
DoEvents
Next
Application.ScreenUpdating = True
MsgBox "ATENCION: ES ESCASO EL STOCK EN LOS SIGUIENTES ARTICULOS:" & Chr(13) & cadena, vbCritical, "Atencion"
End Sub
Graba la hoja y cierra el editor
Bien, a tener en cuenta, no indicaste en que hoja están los datos ni desde que fila partn así que asumí lo siguiente
La hoja es la hoja 1 y los datos están desde A1 hasta Dn..., por lo tanto si tus datos están en una hoja diferente de la hoja 1 debes modifica el indice de la hoja en este linea:
For Each r In Sheets(1).Range("A2" & ":" & "A" & total)
En donde sheets(1) es la hoja 1, ¿se entiende?
El macro inicialmente cuenta cuantos registros hay en la columna A esta columna no debe tener filas vacías entre códigos de artículos o no los tomara todos.
Una vez que cuenta el total de artículos recorrerá cada fila y verificara el stock v/s pedido, una vez terminado te mostrara el mensaje.
Si te sirve CIERRA la pregunta
Ups, lo olvidaba, modifica este indice también si tu hoja no es al hoja 1
total = Application.WorksheetFunction.CountA(Sheets(1).Range("A:A"))
Eso.
Es perfecto, justamente lo que necesitaba, como vos decís, solo trabajare sobre una hoja y los datos comienzan en A1, muchísimas gracias por la colaboración

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas