¿Cómo puedo generar alertas para llamar a clientes en una aplicación creada con Microsoft Excel?

Estimado experto necesito generar una alerta que nos avise el día que tenemos que llamar a un cliente.
Tengo una planilla con los siguientes datos:
Cod. - Hora - Calle - Nº - Nombre - Teléfono - Cod. - Observaciones
En la misma tengo una celda donde aparece la fecha del sistema. La idea que al abrir la planilla nos avise a que cliente tenemos que llamar ese día, ya sea en la planilla o en un aviso. Espero puedan ayudarme ya que tengo a mi jefe respirandome en la nuca con esta planilla y los vendedores olvidándose de llamar a los clientes. Je Je.
Desde ya muchas gracias.
Respuesta
1
Entiendo que lo que quieres es que al abrir el Excel te salga un mensaje que te indique los cliente a llamar. Para ello tienes que comprobar la fecha actual (dices que ya la cargas en una celda (supongamos Z1 de la hoja1) entiendo que con =Now() o por código. En tu ejemplo no veo donde está la fecha en la que tienes que llamar al cliente. Supongo que esta en A1.. An y que el nombre de cliente en B1.. Bn (cambialo a tu gusto según tus datos reales). Entonces el proceso es que al abrir el libro se ejecute una macro que te diga los clientes cuya fecha es igual o inferior al día de hoy. Entiendo que cuando llamas a un cliente actualizas la fecha de la siguiente llamada para que continuamente no te esté saliendo el cliente en la lista.
El código sería:
Option Explicit
Type TCliente 'Tipos de usuario para facilitar las cosas
fecha As Date
nom As String
End Type
Type TTablaCli
c(50) As TCliente
End Type
Sub auto_open() 'Procedimiento que se ejecuta al abrir el fichero y que llama al resto
Call CompruebaFechas
UserForm1.Show
End Sub
Sub CompruebaFechas() 'Procedimiento principal que genera los datos a mostrar
Dim tc As TTablaCli
Dim j As Integer
Dim l As MSForms.Label
Call LeeClientes(tc)
j = 1
While tc.c(j).nom <> ""
Set l = UserForm1.Controls.Add("Forms.Label.1", "label" & j, True)
l.Caption = tc.c(j).fecha & "...." & tc.c(j).nom
j = j + 1
Wend
End Sub
Sub LeeClientes(ByRef tc As TTablaCli) 'Lee los datos según la fecha
Dim i As Integer
Dim j As Integer
Worksheets("Hoja1").Activate
i = 1
j = 1
While Range("a" & j) <> ""
If Range("z1").Value - 1 < Range("a" & j).Value Then 'aqui compruebo la fecha
tc.c(i).fecha = Range("a" & j).Value
tc.c(i).nom = Range("b" & j)
i = i + 1
End If
j = j + 1
Wend
End Sub
Lógicamente tendrás que adaptar el código a tus necidades. Te dejo en particular que veas por tu cuenta como ir colocando las etiquetas para que se vean todas bien dentro del formulario. Ahora se montan unas sobre otras en el formulario.
Estimado cuando ejecuto me da Error de compilación "El procedimiento externo no es Válido",
Ajuste a mis necesidades( cambie el Nº de la hoja y la celda donde tengo la fecha)
Cuando ejecuto me dice "se esperaba: exprsión." y me pone en rojo Up y en Azul Tipe, como cuando te señala que lo cambies. Disculpe las molestias Experto pero no doy con la "tecla" en esta planilla. Sera que me tiene "patilludo" je je...
Desde ya muchas gracias.
No encuentro en mi código ninguna de las dos palabras. Normalmente cuando al escribir el código te pone algo en rojo es porque sintácticamente hay algo mal. Eso explica el error de "se esperaba expresión". Es frecuente cuando se olivida un "=" o unas comillas o un paréntesis. Lo del Tipe, si es que te refieres a Type es la declaración de tipos definidos por el usuario. Ten en cuenta, si no lo hubieras hecho, que los comentarios comienzan con comilla simple y el editor los pone en verde para diferenciarlos del código.
Asegúrate que has copiado y pegado el código correctamente. Yo lo he probado en Excel 2003 y me funciona.
Si aún revisándolo ves que no funciona (después de haber borrado todos los módulos y dejar solo un módulo con este código) ve comentando (poniendo comilla simple delante de cada línea) por partes a ver donde se hace un lio. Por ejemplo si comentas todo menos las declaraciones de tipo, al principio, el programa no hace nada pero no debiera dar error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas