Macro emite aviso y envia mail




Anteriormente se presentó en el post Formulario que emite aviso y envía mail una versión similar a la de este ejemplo, tiene unas variantes que se aplican a casos más específicos, en el post actual se presenta una macro que emite un aviso y envía mails, recorriendo todas las filas con datos, los dos ejemplos mencionados son parecidos, pero tienen sus variantes, se han agregado los dos para que cada lector use el que más se adapta a su libro de Excel.

Una variante a de macro que emite aviso y envía mail, es macro que emite aviso y envía mail a varios destinatarios, como el título lo dice, la principal diferencia es que prácticamente realiza el mismo procedimiento que la macro presentada en el post actual, con la diferencia que se envía a varios destinatarios.

También en macro que envía mails se trató el tema sobre como enviar mail con Excel usando, Gmail, Hotmail o Yahoo, en dicho post había un listado de casillas de correo a las cuales había que enviarles un correo electrónico; para ello se usaba un bucle que recorre desde la fila inicial a la final, en cada recorrido envía un mails a los  distintos destinatarios que están en la fila respectiva,  es una Macro de Excel realizada en VBA que da solución a un sin numero de lectores que buscan poder enviar mails desde Excel.

El ejemplo de macro que aquí se muestra es bastante útil cuando se  pretende que en el Libro de Excel,  salga un AVISO sobre algún evento  dependiendo de una fecha de realización o ejecución de determinada acción, básicamente esta Macro de Excel corre un formulario dando un AVISO y posteriormente ENVIANDO UN MAIL al destinatario del aviso, el cual se debe configurar en la respectiva función, tema que veremos antes de finalizar el post.

En el libro de Excel se tienen una serie de fechas, que representan la fecha límite para realizar una acción determinada, la columna F tiene la fecha de realización de la tarea  mencionada; en la columna B se encuentran los ID de los equipos y es la columna donde la macro se fija recorre hasta la última fila con datos, por ello es importante que no esté vacía ya que de lo contrario la macro se detiene.

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 AvisoMail, el cual determina en cada fila si la fecha de la columna F, es igual o anterior a la fecha del sistema; en caso que la respuesta sea Verdadera; procede a mostrar el UserForm3, cuya programación  interna consiste en que el formulario esté 2 segundos y se cierre solo, posterior a ello se llama la función que envía mails desde Excel, esto se  hace con cada una de las filas que contenga datos del departamento  en cuestión.

Es necesario hacer algunas consideraciones sobre la configuración de la PC; primero, para que funcione, el envío de mails, se debe agregar una referencia en el Editor de Visual Basic  que es Microsoft CDO for Windows 2000 Library, haciendo click en la imagen siguiente, se podrá observar  con más lujos de detalle, la referencia que se debe agregar para que se puedan envíar mails desde Excel.

Bien configurado esto, viene el otro paso  para que se puedan enviar mails con  Excel y no salte error; la función que envía mail está  por defecto  configurada para Gmail, no obstante se agrega en forma de comentario ( ' apostrofe), el servidor Smtp de Yahoo y Hotmail, que son  los correos más populares, si no se tiene estos correos, se puede probar con otros y configurar servidor Smtp y el puerto de salida, lo cual dejaría enviar mails y no daría errores.

El servidor Smtp  de Google  es  "smtp.gmail.com"; el de Hotmail es "smtp.live.com" y el de Yahoo es: "out.izymail.com"; en el caso que se  tuviera una modificación, se debe buscar en google cual es el servidor smpt y puerto del correo que estemos usando.

MASTERCARD PAYONEER

Una vez finalizado el paso anterior, se  deben  realizar otras modificaciones y de esta manera estar condiciones de enviar mails, se debe colocar el nombre de usuario y clave del correo que envía los mails; como así también cual es el mail de origen, cual el de destino. Seguidamente se muestra los códigos utilizados.

Para finalizar con el desarrollo y en el caso que no tengas conocimiento suficiente sobre el manejo de hojas de Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.



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



Private Sub Workbook_Open()
Call Aviso
End Sub


Código que se inserta en un módulo
Public msj As String
Sub Aviso()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim fila, av, avEq, avDep As String
Dim fserv As Date
fila = 4
While Sheets("Hoja1").Cells(fila, 2) <> Empty
fserv = Sheets("Hoja1").Cells(fila, 6).Value
If fserv <= Date Then
avID = Sheets("Hoja1").Cells(fila, 2)
avDep = Sheets("Hoja1").Cells(fila, 3)
avEq = Sheets("Hoja1").Cells(fila, 5)
msj = "El equipo " & avEq & " del departamento " & avDep & " Requiere Service, el ID es " & avID
UserForm3.Show
Sdm = SendMail_mail()
End If
fila = fila + 1
Wend

Application.DisplayAlerts = False
Application.ScreenUpdating = True
End Sub



Código que se inserta en un formulario

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



 


Código que se inserta en un módulo, es la función que envía mails

Function SendMail_mail() As Boolean
'Dimensiono variables
Dim Email As CDO.Message
Dim Autentificion As Boolean
'Creo el objeto email
Set Email = New CDO.Message
'Ponemos datos del servidor a usar
Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com" 'Gmail
'Email.Configuration.Fields(cdoSMTPServer) = "smtp.live.com" 'hotmail
'Email.Configuration.Fields(cdoSMTPServer) = "out.izymail.com" 'yahoo
Email.Configuration.Fields(cdoSendUsingMethod) = 2
'Indicamos el número de puerto smtp
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(465) 'gmail
'Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(25) 'hotmail
'Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(25) 'yahoo
'Decimos si requiere o no autentificación 1 requiere, 0 no requiere
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/" & "configuration/smtpauthenticate") = Abs(1)
'Segundos de espera
'Definición de verdadero para la autentificación
Autentificacion = True
'Configuramos el ingreso al mail
If Autentificacion Then
    'nombre de usuario
    'password
    Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "miclave"
    'si el servidor utiliza SSL (secure socket layer). en gmail: True
    Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
End If
' Una vez configurado nuestro servidor de correo tomados datos de excel para enviar el mail
    'Correo del destinatario
    Email.To = "emaildestino@yahoo.com"
    'Dirección del remitente
    Email.From = "emailremitente@gmail.com"
   ' Asunto
    Email.Subject = msj
   ' Mensaje
    Email.TextBody = "Faltan pocos días hasta la fecha de realización de " & msj
  
   'Actualizamos datos antes del envio
    Email.Configuration.Fields.Update
   'Controlo errores
   On Error Resume Next
   'enviamos propiamente el mail
    Email.Send
    'Si no hay errores la funcion es verdadero
    If Err.Number = 0 Then
       SendMail_Gmail = True
    Else
     'Sale msgbox con descripción del error
       MsgBox "Se produjo el siguiente error: " & Err.Description, vbCritical, "Error nro " & Err.Number
   End If
   'Borro los objetos
    If Not Email Is Nothing Then
       Set Email = Nothing
    End If
    'Controlo errores
    On Error GoTo 0
End Function


Otros post de utilidad:
Busca un dato en todas las hojas de excel
Combobox incrustado en Excel
Formulario para insertar datos en hoja de excel
Tutoriales sobre VBA
Llenar combobox y buscar datos
Mensaje de Alerta y envío de mail con Excel
Combobox que lista hojas de excel y las selecciona




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      

Activa control dependiendo de criterio y copia datos



En varias ocasiones se necesita que un botón, ya sea en un formulario o como en este caso un botón incrustado en Excel, se habilite sólo si se cumplen ciertos requisitos, para luego de ello copiar o manipular datos, este post muestra como se activa un commandbutton dependiendo de ciertos criterios, una vez cumplidos estos criterios gurda los datos en un lugar específico, el guardado de datos ya ha sido explicado en mucho ejemplos desarrollados en este blog como por ejemplo recorrer filas, buscar un dato y pegarlo en otra hoja o recorrer filas buscando y comparado datos de dos columnas de hojas distintas o recorrer filas y buscar datos en base a criterios, en definitiva son numerosos los ejemplos sobre como buscar datos y copiarlos en otra hoja si quieres ver más ejemplos que te ayuden a automatizar tu libro de Excel o proyecto que estés creando mira estos ejemplos y si estás trabajando con formularios mira estos otros ejemplos.

Si no tienes conocimiento suficiente sobre el manejo de hojas de Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.
MASTERCARD PAYONEER



Desde el link del final se puede descargar el archivo de ejemplo de esta manera podrás ver su funcionamiento en forma más detallada. El código de VBA o Macro de Excel evalúa ciertas celdas, si las mismas se encuentran con datos es decir no vacías, entonces copia los datos, caso contrario sale un msgbox que le indica que rellene todos los datos de los campos necesarios, en caso que necesites ayuda sobre msgbox visita el post relacionado; si necesitas saber sobre combobox incrustado en Excel debes visitar el siguiente post.


La macro de Excel funciona de la siguiente forma, cuando se inicia el archivo de Excel hace que el CommandButton se bloque, si se ingresan datos en las celdas determinadas como necesarias, entonces se desbloquea el CommandButton y se copian loa datos correspondientes de la hoja1 en la hoja2.


Código que se debe insertar en el control en este caso CommandButton1


Private Sub CommandButton1_Click()
Dim dato1, dato2, dato3, dato4 As Integer
dato1 = ActiveSheet.Cells(1, 1)
dato2 = ActiveSheet.Cells(2, 1)
dato3 = ActiveSheet.Cells(1, 3)

If dato1 <> emtpy And dato2 <> emtpy And dato3 <> emtpy Then
CommandButton1.Locked = False
Search
Else
MsgBox ("Debe rellenar los campos solicitados"), vbCritical, "AVISO"
End If
End Sub


Código que se debe insertar en Worksheet de la hoja donde está incrustado el control activex en este caso es un commandButton o Botón de Comando.

Private Sub Worksheet_Activate()
CommandButton1.Locked = True
End Sub



 

Código que se debe insertar en un módulo

Sub Search()
Application.ScreenUpdating = False

Dim filac, filabr, filam As Integer

filac = 1
filam = 1
Sheets("hoja2").Select
Cells.Select
Selection.ClearContents
While Sheets("hoja1").Cells(filac, 1) <> Empty

      Sheets("hoja2").Cells(filam, 1) = Sheets("hoja1").Cells(filac, 1)
      Sheets("hoja2").Cells(filam, 2) = Sheets("hoja1").Cells(filac, 2)
      Sheets("hoja2").Cells(filam, 3) = Sheets("hoja1").Cells(filac, 3)
      Sheets("hoja2").Cells(filam, 4) = Sheets("hoja1").Cells(filac, 4)
filam = filam + 1
filac = filac + 1
Wend
MsgBox ("Los datos se guardaron correctamente"), vbInformation, "AVISO"
Application.ScreenUpdating = True
End Sub






Otros post de utilidad:
Busca un dato en todas las hojas de excel
Combobox incrustado en Excel
Formulario para insertar datos en hoja de excel
Tutoriales sobre VBA
Llenar combobox y buscar datos
Mensaje de Alerta y envío de mail con Excel
Combobox que lista hojas de excel y las selecciona




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 fila, busca un dato y lo pega en otra hoja


Este es otro ejemplo más sobre una macro que buscar un dato y lo pega en otra hoja, previo cumplir con ciertos criterios, en el post busca y compara datos de dos columnas distintas en hojas distintas, se hace algo parecido, pero es un poco más complejo ya que son dos columnas las que se tienen en cuenta que coincidan con el criterio definido, a lo que se suma que se encuentran en hojas distintas; también guarda relación con esta la macro que extrae datos en base a criterio y los concatena.

El tema de recorre filas y buscar datos es algo muy solicitado en los foros es por ello que te paso otros links relacionados como: recorre las filas busca el dato y lo resalta; también puedes consultar como eliminar una fila en recorre filas busca dato y elimina fila cuando encuentra el dato, tal vez te interese una macro que recorre las filas busca y dato y lo pega en otra hoja o recorrer la columna A y pegar los datos en la columna Bmacro que recorre compara celdas y las colorea, también pueda que te interese recorrer filas buscar datos y pegarlo en otra hoja; si estás buscando ejemplos como recorrer filas los mencionados te pueden ayudar a realizar tu macro, si necesitas más ejemplos acá tienes cientos de ejemplos de macros con su archivo de ejemplo el cual puedes descargar, también encontrarás ejemplos con uso de formularios,combobox y textbox.

MASTERCARD PAYONEER

Antes de seguir con el desarrollo y en el caso que no tengas conocimiento suficiente sobre el manejo de hojas de Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.

La macro funciona con el código que se encuentra más abajo, básicamente lo que hace es buscar en la hoja denominada code un dato, mediante un bucle que recorre hasta la última celda con datos; este dato lo busca en la hoja branch, en caso de encontrarlo, copia ciertos datos y los pega en la hoja main.

Desde el link del final se puede descargar el archivo con la macro de Excel y de esta manera podrás ver su funcionamiento en forma más detallada. El código de VBA o Macro de Excel aquí presentado, busca fila por fila el dato requerido hasta la última fila con datos, el código que se agrega a continuación se debe colocar en un módulo, se debe ejecutar la macro desde Excel o colocar un botón y asignarle la macro, ya sea de cualquier forma, al ejecutar la macro procede a buscar un dato en otra hoja, si lo encuentra copiar los registros a otra hoja distinta.


Código que se debe insertar en un módulo


Sub Search()
Application.ScreenUpdating = False

Dim filac, filabr, filam As Integer

filac = 2
filabr = 2
filam = 2



 

    While Sheets("code").Cells(filac, 1) <> Empty

    While Sheets("branch").Cells(filabr, 1) <> Empty
    dato1 = Sheets("code").Cells(filac, 1)
    dato2 = Sheets("branch").Cells(filabr, 1)
   
       If Sheets("code").Cells(filac, 1) = Sheets("branch").Cells(filabr, 1) Then

      Sheets("main").Cells(filam, 1) = Sheets("branch").Cells(filabr, 1)
      Sheets("main").Cells(filam, 2) = Sheets("branch").Cells(filabr, 2)
      Sheets("main").Cells(filam, 3) = Sheets("branch").Cells(filabr, 3)
      Sheets("main").Cells(filam, 4) = Sheets("branch").Cells(filabr, 4)
      Sheets("main").Cells(filam, 5) = Sheets("branch").Cells(filabr, 5)
      Sheets("main").Cells(filam, 6) = Sheets("branch").Cells(filabr, 6)
      filam = filam + 1
      End If
 
    filabr = filabr + 1
    Wend
 

filac = filac + 1
filabr = 2

Wend

Application.ScreenUpdating = True
End Sub




Otros post de utilidad:
Insertar columnas
Busca un dato en todas las hojas de excel
Combobox incrustado en Excel
Formulario para insertar datos en hoja de excel
Hacer un zoom en la celda
Llenar combobox y buscar datos
Mensaje de Alerta y envío de mail con Excel
Combobox que lista hojas de excel y las selecciona




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 crea y borra archivos


Crear y Borrar archivos mediante código de VBA, me preguntaron en un foro de USA si era posible que una macro borre archivos, a la cual le adicione que previamente la macro de excel cree archivos para que el ejemplo sea de utilidad, entonces este post contiene una macro de Excel que crea y borrar archivos, en este caso los archivos son de Excel, sin embargo se puede modificar y borrar con una macro cualquier tipo de archivo, se debe tener cuidado al manipular la misma ya que puede por error borrar archivos importantes, pero si se siguen las instrucciones no hay ningún tipo de problema ya que trabaja en un ambiente controlado, un ejemplo de este blog crea archivos Csv luego de extraer información de otro libro, ejemplo que también aporta a enseñar como se manipulan archivos..

Trabajar con archivos obliga a saber como manipular carpetas, ya sea crear, borrar, saber si existen o no en un determinado directorio, crear sus nombre en forma variable es decir sea el resultado de una celda o cualquier otra variable, es por ello que sería importante complementar este post con el denominado crea carpetas y guarda nombre de archivo en forma variable en PDF o también es común necesitar copiar los datos de un libro en otro, para ello se crea una macro que copia datos, abre libro y lo cierra, con estos ejemplos se está en condiciones que crear una macro propia, combinándolas.

Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas 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.

MASTERCARD PAYONEER


Desde el link del final se puede descargar el fichero de ejemplo, siendo necesario descargar el archivo con la macro y luego modificar la dirección tal cual se explica.

Resumo el procedimiento para poder configurar la macro y que funcione bien; se debe modificar la dirección que figura en la macro por una dirección correcta:

Modificar la dirección original que figura en la macro


path = "C:\Users\MyNotebook\Documents\Archivos a Borrar"

Por una dirección real en tu PC por ejemplo

C:\Users\Miusuario\Documents\Archivos a Borrar

Se debe modificar tanto la macro que crea como en la macro que elimina los archivos, es decir dos veces.

path = "C:\Users\Miusuario\Documents\Archivos a Borrar"por la dirección

La macro que crea y borra archivos, se podrá ver en funcionamiento una vez descargado a tu PC el archivo de ejemplo, al abrir el libro salen dos botones tal cual la imagen del principio, presionando el botón crear archivos creará una serie de archivos del 1 al 9, es decir Libro1, Libro2, Libro3 y así sucintamente.


Presionando el botón eliminar, eliminará los archivos listados en la columna A de la Hoja 1, recorriendo fila por fila hasta el final, verificando que previamente el archivo exista, en caso de existir elimina el archivo, se puede modificar y eliminar cualquier tipo de archivo, se sugiere tratar con sumo cuidado y siguiendo las instrucciones para evitar un borrado accidental de otros archivos que son de utilidad. El código que sigue es el realiza los procedimientos descriptos el primero Elimina archivos y el segundo crear archivos





Código que se debe insertar en un módulo


Sub EliminarArchivos()
Application.ScreenUpdating = False
Dim fila, path, nomfile, pnf As String
fila = 2
'Arma el path
While Sheets("Hoja1").Cells(fila, 1) <> Empty
path = "C:\Users\MyNotebook\Documents\Archivos a Borrar" 'CAMBIAR ESTA DIRECCION, POR LA DIRE DONDE SE COPIE LA CARPETA BAJADA
nomfile = Sheets("Hoja1").Cells(fila, 1)
path1 = path & "\" & nomfile & ".xlsm"
'Verifica que este el archivo en su caso lo elimina y escribe aviso, sino escribe un aviso.
If Dir(path1) <> "" Then
Kill path1
Sheets("Hoja1").Cells(fila, 2) = "Eliminado"
Else

 

Sheets("Hoja1").Cells(fila, 2) = "Archivo No Existe"
End If
fila = fila + 1
Wend
Application.ScreenUpdating = True
End Sub

Sub creaarchivo()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim fila, path, nomfile, pnf As String
Dim ObjExcel As Application
Dim ObjLibro As Workbook
fila = 2


'Arma el path
For x = 2 To 10

path = "C:\Users\MyNotebook\Documents\Archivos a Borrar" 'CAMBIAR ESTA DIRECCION, POR LA DIRE DONDE SE COPIE LA CARPETA BAJADA
nomfile = Sheets("Hoja1").Cells(x, 1)
path1 = path & "\" & nomfile & ".xlsm"

'Verifica que la carpeta necesaria para el ejemplo este, caso contrario la crea
If Dir(path, vbDirectory) = "" Then
MkDir path
End If

'Verifica que este el archivo en su caso lo elimina y escribe aviso, sino escribe un aviso.
If Dir(path1) = "" Then
'Abre una instancia nueva de Excel
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True
'Crea un nuevo libro o abre un libro existente
Set ObjLibro = ObjExcel.Workbooks.Add
ActiveWorkbook.SaveAs Filename:=path1
ObjExcel.Quit
Sheets("Hoja1").Cells(x, 2) = "Creado"
Else
Sheets("Hoja1").Cells(x, 2) = "Archivo Existente"
End If

Next x
nomfile = "Macro Crea y Borrar Archivos"
path1 = path & "\" & nomfile & ".xlsm"
ActiveWorkbook.SaveAs Filename:=path1
Application.ScreenUpdating = True
Application.DisplayAlerts = False
End Sub



Otros post de utilidad:
Colorea celda del dato buscado
Busca un dato en todas las hojas de excel
Combobox incrustado en Excel
Formulario para insertar datos en hoja de excel
Tutoriales sobre VBA
Llenar combobox y buscar datos
Mensaje de Alerta y envío de mail con Excel
Combobox que lista hojas de excel y las selecciona





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 encuentra datos y los suma


En un foro me consultan sobre como se puede contar la cantidad de registros que existen en un rango de números, el problema se resuelve con dos bucles, uno que recorre una hoja con un listado de números  fila por fila y el otro bucle que recorre los rangos de números, verificando si el número pertenece al rango en caso lo suma, de lo contrario pasa a la fila siguiente donde existe otro rango de números, la macro presentada en el post recorre filas y cuenta celdas con datos está bastante relacionado con el que se presentá aquí, pudiendo ser de utilidad si se quiere modificar y adaptar la macro a lo que se este realizando en excel, al igual que la macro recorre filas y agrega número de fila en base a criterios.

MASTERCARD PAYONEER

En el caso planteado se tiene dos hojas, una con un listado de números, otra con un rango de números, el objetivo es tomar un número de la hoja 2 y verificar si entra en el rango de números, de la hoja 1 fila 2, en caso contrario verificar en la fila 3 y así sucesivamente hasta la última fila con datos. Una vez que se buscó en todas las filas de la hoja1 que contiene los rangos de datos, se procede a buscar el dato que está en la fila siguiente de la hoja 2, así sucesivamente hasta la  última fila con datos.

Desde el link del final se puede descargar el archivo de ejemplo de esta manera podrás ver su funcionamiento en forma más detallada. El código de VBA o Macro de Excel procede a recorrer fila por fila en la hoja con los datos a buscar; recorriendo también fila o fila la hoja de rangos hasta encontrar el intervalo buscado, una vez encontrado se procede a hacer una suma para determinar que cantidad de registros de la hoja 2 que se encuentran incluidos en los rangos de la hoja1.

Antes de seguir Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.
con el desarrollo y en el caso que no tengas conocimiento suficiente sobre el manejo de hojas de


Código que se debe insertar en un módulo


Sub search()
Application.ScreenUpdating = False
Dim file, file1 As Integer
Dim Data1, Data2, Data3, conta As Long
file = 2
file1 = 1
conta = 0


 



Sheets("Range").Range("c:c").ClearContents
Sheets("Not found").Range("b:b").ClearContents

While Sheets("Not found").Cells(file1, 1) <> Empty
   
    While Sheets("Range").Cells(file, 1) <> Empty
 
        Data1 = Sheets("Range").Cells(file, 1).Value
        Data2 = Sheets("Range").Cells(file, 2).Value
        Data3 = Sheets("Not found").Cells(file1, 1).Value
 
     If Data3 >= Data1 And Data3 <= Data2 Then
     conta = Sheets("Range").Cells(file, 3).Value
     conta = conta + 1
     Sheets("Range").Cells(file, 3) = conta
     Sheets("Not found").Cells(file1, 2) = "Found"
     End If
    file = file + 1
    Wend
file = 2
file1 = file1 + 1
Wend
Application.ScreenUpdating = False
End Sub

Otros post de utilidad:
Busca un dato en todas las hojas de excel
Combobox incrustado en Excel
Formulario para insertar datos en hoja de excel
Tutoriales sobre VBA
Llenar combobox y buscar datos
Mensaje de Alerta y envío de mail con Excel
Combobox que lista hojas de excel y las selecciona




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      

Verificación Baidu

Dificil Desición






Humor Gráfico



MASTERCARD PAYONEER

  1. Trucos de Excel
  2. Macro que envía mail y emite formulario de aviso
  3. Macro Alerta mediante parpadeo de celda
  4. Glosario de palabras usadas en VBA para Excel
  5. Forma de seleccionar o hacer referencia a celdas, rangos y hojas
  6. Macro crea y elimina archivos





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

Formulario Menu muestra y oculta hojas de excel




He visto que en varios en foros hay preguntas sobre como hacer con macros de VBA un menú de inicio que muestre y oculte hojas, eso precisamente se hace en este ejemplo, es decir al abrir el archivo de Excel se muestra un menu inicio desde el cual se puede navegar a las distintas hojas que componen el libro de Excel, mostrando la hoja seleccionada y cuando se termine de trabajar en ella regrese al menú inicial y oculte la hoja, todo lo mencionado se hace a través de macros de VBA o procedimientos de vba.

MASTERCARD PAYONEER

Muchas veces realizamos una aplicación con Excel en la cual deseamos tener un formulario o userform de inicio y desde ahí navegar hacia las distintas hojas, mostrando la hoja en la que deseamos trabajar y ocultando el resto; el fin de ocultar las hojas y navegar desde un formulario o menú de inicio se puede requerir por una cuestión de profesionalidad, porque no se desea que se vean las hojas que componen el libro; por seguridad, ya que las hojas pueden contener fórmulas que pueden ser accidentalmente modificadas y con ello romper o estropear el libro, o porque solo se quiere dar acceso a personas autorizadas y al hacer click en el botón que selecciona la hojacargar un formulario que solicite una clave o password previamente para dar acceso a la hoja protegida, en fin son varios los objetivos por los que se puede requerir tener un formulario estilo menú de inicio.





  

Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas 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.

Desde el link del final se puede descargar el archivo de ejemplo de esta manera podrás ver su funcionamiento en forma más detallada. El código de VBA o Macro de Excel proporcionado en el libro hace que al iniciar el libro se corra la macro que carga un formulario de inicio o menú con varios botones a los que se le asigna un nombre de hoja, haciendo click en el botón de la hoja a la cual se quiere acceder, se corre otra macro que selecciona la hoja correspondiente ocultando el formulario de menú inicio, luego de trabajar en la hoja se puede hacer click nuevamente en un botón que se encuentra en la hoja y nuevamente se muestra el formulario de menú inicio como así también la hoja1, ocultándose la hoja en la cual estábamos trabajando, estos se puede adaptar a cualquier nombre de hoja  que tenga cada uno en su libro, esta macro esta relacionada con una anterior que he publicado y consiste en un formulario que lista las hojas y las agrega en un combobox  donde se elige el nombre de la hoja y automáticamente se selecciona y posiciona en ella.


Código que se debe insertar en un userform 




Private Sub CommandButton2_Click()
Unload Me
Sheets("Hoja2").Visible = True
Sheets("Hoja2").Select
End Sub
Private Sub CommandButton3_Click()
Unload Me
Sheets("Hoja3").Visible = True
Sheets("Hoja3").Select
End Sub
Private Sub CommandButton7_Click()
Sheets("Hoja7").Visible = True
Sheets("Hoja7").Select
Unload Me
End Sub
Private Sub CommandButton9_Click()
Unload UserForm1
End Sub
Private Sub CommandButton4_Click()
Unload Me
Sheets("Hoja4").Visible = True
Sheets("Hoja4").Select
End Sub
Private Sub CommandButton5_Click()
Unload Me
Sheets("Hoja5").Visible = True
Sheets("Hoja5").Select
End Sub

 
Private Sub CommandButton6_Click()
Unload Me
Sheets("Hoja6").Visible = True
Sheets("Hoja6").Select
End Sub
Private Sub Label1_Click()
ActiveWorkbook.FollowHyperlink "http://www.programarexcel.com"
End Sub


Código que se inserta en un módulo

Sub muestrauserform()
UserForm1.Show
End Sub
Sub irmenu()
hoja = ActiveSheet.Name
Sheets(hoja).Visible = xlVeryHidden
Sheets("Hoja1").Select
UserForm1.Show
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