Macro Formulario de Aviso





En esta oportunidad les presento una variante del ejemplo macro de alerta mediante parpadeo de celda, el objetivo de la macro de VBA es solicitar a Excel que emita un AVISO, ALERTA o permita recordar un suceso próximo de cierta situación, puede ser fecha de caducidad, nivel de stock o cualquier otro motivo que necesite un recordatorio, difiere del anterior en que ahora sale un formulario de alerta, cosa que en el otro archivo ejemplo se mostraba un aviso en la celda mediante un parpadeo.

En uno de los primeros ensayos se expuso también una macro sobre aviso mediante parpadeo de celda, en esa ocasión el ejemplo consistía en que se controlaban los datos ingresados en una columna y si la suma de valores era menor a un cierto dato, corría la macro de VBA y salía un mensaje en la celda estableciendo una alerta sobre stock crítico, además de parpadear la celda cambiándose de color constantemente.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.



  

El presente ejemplo tiene relación con la entrada publicada anteriormente, aunque es un poco más compleja en su programación, ya que en el anterior ejemplo además de salir un formulario de aviso de inicio al abrir el libro, Excel envía un mail con dicho recordatorio.

El procedimiento de VBA que se presenta en el post consiste en que cada vez que se abra el archivo; la macro de Excel, revisa las fechas de producción (Columna J) y caducidad (Columna K), el fin es que Excel avise cada 30 días desde la fecha de producción  con el tope de la fecha de vencimiento, si se dan estas condiciones sale un formulario dando dicho  aviso, el userform se muestra dos segundos y se cierra solo transcurrido ese lapso; este control lo hace desde la fila inicial hasta la última celda con datos.

Entrando en detalles, cuando bajes el archivo de excel, verás que contiene una serie de productos con  su fecha de producción y su fecha de vencimiento entre otros datos; al abrir el Libro de Excel, se corre una macro o procedimiento de VBA, que controla que la fecha de aviso sea igual a la fecha de producción más 30 días, luego va avisando cada 30 días hasta llegar a la fecha de vencimiento; emitiendo un formulario de alerta que se cierra solo pasados dos segundos, el mismo lo podrás descargar desde el link del final, pudiendo ser adaptado a lo que específicamente se requiera, ya que el código no tiene restricción alguna.

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.









Código a insertar en ThisWorkbook


Private Sub Workbook_Open()
Call FormAviso
End Sub

Código  a insertar en formulario

Private Sub UserForm_Activate()
Tpo = "00:00:02"
Label1.Font = arial
Label1.Font.Size = 10
Label1.Caption = msj
Application.Wait Now + TimeValue(Tpo)
UserForm1.Hide
End Sub


Código que se insertar en un módulo

Public msj As String
Sub FormAviso()
On Error Resume Next
Application.ScreenUpdating = False
Dim fila As Integer
Dim msj1, msj2, msj3 As String
Dim fa, fv As Date
 fila = 6

While Sheets("BD").Cells(fila, 3) <> Empty
   fa = Sheets("BD").Cells(fila, 10) + 30
   fv = Sheets("BD").Cells(fila, 11)
 
   If Sheets("BD").Cells(fila, 1) <> Empty Then
   fa = Sheets("BD").Cells(fila, 1) + 30
   End If
 
   If Date = fa And Date <= fv Then
    Sheets("BD").Cells(fila, 1) = Date
   'ejecuta la rutina
    msj1 = Sheets("BD").Cells(fila, 3).Text
    msj2 = Sheets("BD").Cells(fila, 6).Text
    msj3 = Sheets("BD").Cells(fila, 11).Text
    msj = "El código  " & msj1 & ", cuyo producto es " & msj2 & Chr(10) & _
    "tiene fecha de Vencimiento el " & msj3 & Chr(10) & Chr(10) & _
    "Hoy es " & Date
 
    UserForm1.Show

   End If
 
fila = fila + 1
Wend
Application.ScreenUpdating = False
End Sub






Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Macro alerta de evento parpadeo de celda


En muchas ocasiones se requiere que Excel de un AVISO, ALERTA o haga recordar sobre determinado evento, ya sea una fecha de caducidad, nivel de stock o cualquier otro motivo que necesite un recordatorio, en el post anterior se mostraba un ejemplo de macro sobre aviso mediante parpadeo de celda, en esa ocasión el ejemplo consistía en que se controlaban los datos ingresados en una columna y si la suma de valores era menor a un cierto dato, corría la macro de VBA y salía un mensaje en la celda estableciendo una alerta sobre stock crítico, además de parpadear la celda cambiándose de color constantemente; sugiero si este ejemplo te interesa que veas la variante en donde en vez de dar aviso en la celda sale un  formulario de aviso cuando se abre  el archivo de Excel.


También el presente ejemplo tiene relación con la entrada publicada anteriormente, aunque es un poco más compleja en su programación, ya que además de salir un formulario de aviso de inicio al abrir el libro, Excel envía un mail con dicho recordatorio.


El procedimiento de VBA que se presenta acá esta  bastante relacionado, pero tiene ciertas, hasta diría muchas variantes con respecto al anterior; esta macro de Excel, se inicia cuando se abre el archivo de Excel, el objetivo es que Excel avise cada 30 días desde la fecha de producción (columna K) con el tope de la fecha de vencimiento que se encuentra en la columna L, si se dan estas condiciones sale un aviso y parpadea la celda de la columna A y fila correspondiente, este control lo hace desde la fila inicial hasta la última celda con datos.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.



  
Volviendo al ejemplo  macro de VBA planteado, en otras palabras, el archivo contiene una serie de productos con  su fecha de producción y su fecha de vencimiento entre otros datos; al abrir el Libro de Excel, se corre una macro o procedimiento de VBA, que controla que la fecha de aviso sea igual a la fecha de producción más 30 días, luego va avisando cada 30 días hasta llegar a la fecha de vencimiento; el aviso sale en la columna A de la fila correspondiente esto se realiza por cada uno de los productos listados, la última celda con el aviso queda parpadeando.

A continuación se trascribe el código usado, desde el link del final podrás descargar el archivo, el cual se podrá adaptar de acuerdo a lo que se necesite.

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.







Código a insertar en ThisWorkbook

Public fila As Integer
Sub Workbook_Open()
Sheets("BD").Range("a6:a1048576").Interior.ColorIndex = 0
On Error Resume Next
Application.ScreenUpdating = False
Dim fa, fv As Date
 fila = 6

While Sheets("BD").Cells(fila, 3) <> Empty
   fa = Sheets("BD").Cells(fila, 11) + 30
   fv = Sheets("BD").Cells(fila, 12)
 
   If Sheets("BD").Cells(fila, 2) <> Empty Then
   fa = Sheets("BD").Cells(fila, 2) + 30
   End If
 
   If Date = fa And Date <= fv Then
   Sheets("BD").Cells(fila, 1).Activate
   Sheets("BD").Cells(fila, 1) = "ALERTA"
   Sheets("BD").Cells(fila, 2) = Date
   'ejecuta la rutina
   Alert
   Else
   Sheets("BD").Cells(fila, 1) = ""
   End If
 
fila = fila + 1
Wend
Application.ScreenUpdating = False
End Sub


Código que se insertar en un módulo

Sub Alert()
'Rutina ejecuta parpadeo
On Error Resume Next
    If ActiveCell.Interior.ColorIndex = 1 Then    'interior colornegro

        ActiveCell.Interior.ColorIndex = 3    'interior color rojo

        ActiveCell.Font.ColorIndex = 1   'fuente color negro

    Else

        ActiveCell.Interior.ColorIndex = 1   'interior color negro

        ActiveCell.Font.ColorIndex = 2        'fuente color blanco

    End If

'controla el contenido de la celda . Si es de Alerta, ejecuta esta rutina de cambio de colores

    If ActiveCell.Text = "ALERTA" Then

        Application.OnTime Now + TimeSerial(0, 0, 1), "Alert"

    Else

        ActiveCell.Interior.ColorIndex = 0  'interior color fijo celeste

        ActiveCell.Font.ColorIndex = 3      'fuente color fijo rojo

    End If
fila = fila + 1
End Sub





Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Recorre filas agrega número de fila en base a criterios


En en post anterior se presentó un formulario que además de buscar datos y rellenar los textbox con los datos buscados, coloreaba la celda donde se encontraba el dato; el ejemplo de macro que se presenta en esta entrada realiza algo parecido, con la variante que no existe formulario ni textbox que rellenar, como así tampoco marca la celda con color, en la imagen se presenta una vista previa del archivo de ejemplo.

Para ubicarnos mejor, en el ejemplo se presenta un listado de cheques con los siguientes datos, fecha, concepto, número de cheque, importe y estado, al presionar el botón se corre un procedimiento de VBA que busca todos aquellos cheques que se encuentren en estado "Pendiente"; luego realiza un informe en la hoja2.

La Macro de Excel crea un informe, para ello recorre las filas agregando el número de fila donde se encuentra el registro, concatenado con la palabra según el estado del cheque, en este caso es "Pendiente", ya que se puso como criterio que busque sólo los cheques pendientes; esta Macro de VBA se puede adaptar a cualquier situación; podría ser el caso que se tenga un listado de registros y en alguna columna se tenga una columna de control que coloque "OK" si todo va de acuerdo a lo planeado o que coloque "Error", si existe algo no previsto; en este caso se puede modificar la macro para que recorra todas la filas y busque "Error" informando en que fila exactamente están los datos que provocan el error; en fin existen muchas aplicaciones que se le pueden dar a la macro que aquí se muestra.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.







Código que se insertar en un módulo


Sub busca()
Application.ScreenUpdating = False
Dim fila, fila1 As Integer
Dim numfila As String
fila = 3
fila1 = 2
Sheets("hoja2").Range("a2:xfd1048576").ClearContents
While Sheets("hoja1").Cells(fila, 1) <> Empty
 If Sheets("hoja1").Cells(fila, 5) = "Pendiente" Then
    numfila = Cells(fila, 1).Row
    Sheets("hoja2").Cells(fila1, 1) = numfila & " Pendiente"
    Sheets("hoja2").Cells(fila1, 2) = Sheets("hoja1").Cells(fila, 2)
    Sheets("hoja2").Cells(fila1, 3) = Sheets("hoja1").Cells(fila, 3)
    Sheets("hoja2").Cells(fila1, 4) = Sheets("hoja1").Cells(fila, 4)
    fila1 = fila1 + 1
 End If
fila = fila + 1

Wend
Application.ScreenUpdating = True
End Sub




Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Macro de Excel abre libro copia datos y cierra libro





En el post copia  datos, abre otro libro y pega datos se presentó un ejemplo de macro de excel, diseñada en VBA, que copiaba los datos del libro de excel actual, abría otro libro de excel y pegaba los datos que había copiado del libro donde se estaba trabajando, ahora explico algo parecido, pero copiando los datos directamente de un formulario o userform, la idea es que cada usuario tenga en su pc un archivo de excel con una plantilla solamente, dicha plantilla está conformada por un formulario para ingresar datos, tal como se muestra en la imagen.

El formulario de ejemplo está compuesto por dos combobox que uno extrae los datos de los Clientes que están registrados en la hoja2; en cambio el combobox2 al inicializarse el formulario se agregan dos items solamente, sin necesidad de recorrer las filas e ir agregando registro por registro hasta que se llegue a la última fila con datos como en el caso del combobox1.

Además de los combobox de los que se hablaba en el párrafo anterior el formulario de ejemplo está presenta tres textbox para capturar datos y dos botones de comando, uno para cerrar el formulario y otro para guardar los datos cargados en los combobox y textbox.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

La programación de la Macro de Excel realizada en VBA, para el botón que realiza  la función de cerrar el formulario es muy simple, Unload Me,  en el botón de comando guardar se concentra la mayor parte del código, una vez cargados los datos; en este ejemplo, en caso de haber algún control vacío, hace que salga un msgbox avisando que se deben completar todos los campos, luego el procedimiento de VBA, abre el libro, que en este caso se encuentra en una carpeta compartida, guarda los datos de los combobox y textbox y luego guarda el  libro, haciendo foco en el combobox1 para seguir con la siguiente carga de datos. Haciendo click en  la imagen podrás agrandarla y ver una primera impresión del libro.

Se debe tener en cuenta a los fines de la utilización del ejemplo, que cuando se descarga el mismo, se baja un archivo comprimido con dos archivos de excel; en uno esta la plantilla, que se observa en la imagen, con el formulario para ingreso de datos y otro archivo, denominado libro4, en donde guarda los datos el formulario; aquí se debe tener la precaución de cambiar el código que está en el botón "SAVE" del formulario, básicamente es modificar la dirección en donde la macro va a buscar el libro y luego va a guardar el archivo llamado libro4.

Este es el códigos que se debe adaptar por la dirección correcta del libro donde cada uno guardó el archivo de ejemplo bajado y denominado libro4:

Application.Workbooks.Open "C:\Users\MyNotebook\Documents\libro4.xlsx"

Este ejemplo de macro es bastante útil cuando existen varios usuarios que cargan o ingresan datos sobre una misma base, por ello el libro con la base de datos se guarda en una carpeta compartida para que todos tengan acceso y en la PC de cada usuario se debe cargar un archivo liviano que contiene solamente el formulario de ingreso de datos, también se puede implementar cuando se desea guardar datos en cualquier otro archivo que no sea el archivo actual desde el cual se ejecuta la macro.

Al abrir el libro de Excel primero se ejecuta un procedimiento de VBA  que se encuentra en ThisWorkbook, está línea de código llama a otro procedimiento que se encuentra en  el Módulo 1, el cual procede a mostrar el UserForm1, que contiene los combobox y cuadros de texto de los cuales venimos hablando.

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.









Código que se inserta en ThisWorkbook del libro de Excel, descarga el ejemplo para verlo en funcionamiento.


Private Sub Workbook_Open()
show
End Sub


Código que se inserta en un módulo
Sub show()
UserForm1.show
End Sub


Código que se inserta en el formulario
Private Sub CommandButton1_Click()

Dim uf As String
Dim importe As Currency
 Application.ScreenUpdating = False

If ComboBox1 = Empty Or TextBox1 = Empty Or TextBox2 = Empty Or TextBox3 = Empty Or ComboBox2 = Empty Then
MsgBox ("Debe completar todos los campos"), vbCritical, "AVISO"
ComboBox1.SetFocus
Exit Sub
End If

'Abrimos el libro donde se va a copiar

Application.Workbooks.Open "C:\Users\MyNotebook\Documents\libro4.xlsx"  'Cambiar por la dirección correcta del libro en la PC

'determines last row with data
uf = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
uf = uf + 1
importe = TextBox3.Value
Sheets("hoja1").Cells(uf, 1) = ComboBox1
Sheets("hoja1").Cells(uf, 2) = TextBox1
Sheets("hoja1").Cells(uf, 3) = TextBox2
Sheets("hoja1").Cells(uf, 4) = importe
Sheets("hoja1").Cells(uf, 5) = ComboBox2


'Cierra libro guardando cambios sin preguntar
Workbooks("libro4.xlsx").Close True

ComboBox1 = Clear
TextBox1 = Clear
TextBox2 = Clear
TextBox3 = Clear
ComboBox2 = Clear
ComboBox1.SetFocus
Application.ScreenUpdating = True

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
ComboBox1.Clear
Sheets("hoja2").Select
Range("A2").Select
While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Wend


ComboBox2.Clear
ComboBox2.AddItem ("CANCELLED")
ComboBox2.AddItem ("PENDING")
Sheets("hoja1").Select
Application.ScreenUpdating = True
End Sub







CLICK para descargar en ejemplo en forma gratuita, si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página.



CLICK to download free example, If this post was helpful INVITE ME A COFFEE and so help keep up the page.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Nos va a comprar un perro






Humor Gráfico





MASTERCARD PAYONEER

Lo más visto:
  1. Llenar combobox y buscar datos
  2. Macro que envía mail y emite formulario de aviso
  3. Llenar listbox de varias columnas con datos variables dependiendo de combobox
  4. Macro VBA recorre filas, busca y copia datos en base a criterios
  5. Forma de seleccionar o hacer referencia a celdas, rangos y hojas


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends