PROGRAMAR EN VBA MACROS PARA EXCEL: octubre 2013

Los tiempos cambian







Humor Gráfico
MASTERCAR 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




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

Compara filas misma columna copia datos en base a criterios



Unas de las cosas básicas que siempre o casi siempre se necesita al realizar Macros de Excel, es recorrer las filas comparando datos, para luego copiar o cortar los datos, como así también eliminar las respectivas filas; este Código o Macro de VBA, aporta una pequeña ayuda mostrando como se puede comparar datos y en caso de coincidencia copiar y luego eliminar la fila donde se encontraba el dato o registro en la fila de Excel, cabe destacar que es motivo de muchas preguntas en foros sobre el tema.

En oportunidades anteriores se han agregado ejemplos que recorren filas en busca de datos los cuales se sugiere ver a los fines de complementar, como por ejemplo: como ordenar datosdeterminar la última fila o columna con datosinsertar filasrecorrer filas mediante un bucle, estos son algunos de los ejemplos donde se puede observar como se utilizan los códigos de VBA o macros de Excel a los fines de obtener el resultado deseado, en  la categoría Macros VBA encontrarás muchos ejemplos que puedes adaptar a tu proyecto, un ejemplo reciente trata sobre ordenar los datos para luego trabajar con ellos.

Como es costumbre puedes descargar el ejemplo de la macro proporcionada, en forma gratuita, analizar su programación, adaptar a lo que requieras, para ellos debes descargarlo del link del final, sugiero que lo combines con algún otro ejemplo o ejemplos si necesitas adaptarlo a tu proyecto, el Código de VBA proporcionado aquí es libre.

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.



  

Cuando abres el libro te encuentras con cuatro hojas una que se denomina, "OriginalOriginal", otra "Original", otra hoja que se llama "Coinciden" y por último una hoja que se titulo "No Coinciden"; la primer hoja se proporciona a los fines de poder observar varias veces como trabaja  la macro de Excel; ya que una vez corrida la macro y ordenados los datos, se pueden eliminar de las otras tres hojas y copiar los datos de la hoja "OriginalOriginal" en la hoja "Original" y volver a correr la macro cuantas vece querramos.

Al presionar el botón se ejecuta un procedimiento de VBA que en primer lugar solicita mediante un ImputBox, que se ingrese la columna a Evaluar, en este caso es la columna "E", pero se puede seleccionar cualquier columna si están los datos en es columna, si se selecciona otra columna la macro no funciona, ya que los datos a evaluar están en la columna E en este ejemplo, se debe observar que se solicita al usuario establezca donde se encuentran los datos a evaluar, lo que hace la macro versátil, ya que se pueden cambiar de columna y la macro de VBA seguiría funcionando sin problema, aparte que se muestra en forma muy escueta el funcionamiento de ImputBox, que en este caso el valor ingresado se lo asigna a una variable para determinar el rango donde buscar los datos a evaluar.

En el libro de Excel se evalúa el registro de la primer columna que coincida con el registro de la fila siguiente y así sucesivamente hasta que llegue al último registro, es decir se recorren y comparan filas de la misma columna en caso de encontrar una coincidencia, el ejemplo tiene como criterio que la diferencia entre las filas seleccionadas de la misma columna, debe dar igual a cero; en caso verdadero, copia los datos en la hoja "Coinciden" caso contrario copia los datos en la hoja con "No Coinciden", eliminando los datos de las filas respectivas en la hoja "Original", a través del comando Delete. Los datos copiados son todos de la fila, es decir la fila completa; en este caso para pasar los datos de una hoja a la otra no se usa el comando "copy" "paste"; se hace que la fila y columna de hoja adonde se copian los datos sea igual a la fila y columna de origen de datos, es una variante en vez de copiar y pegar, que es bueno saber usar cuando se programa macros de Excel mediante VBA.

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 comparafilas()
Dim fila, fila1, filaev, filade, conta, dato1, dato2, ncol As Integer
Dim col As String
MASTERCARD PAYONEER

fila = 2
fila1 = 3
filaev = 2
filade = 2
conta = 0
col = InputBox(Chr(10) & Chr(10) & "Introduzca columna a evaluar, ej A, B, C, etc.")
col = col & "1"
ncol = Range(col).Column
While Sheets("Original").Cells(fila1, ncol) <> Empty
dato1 = Sheets("Original").Cells(fila, ncol).Value
    While Sheets("Original").Cells(fila1, ncol) <> Empty And conta = 0
      dato2 = Sheets("Original").Cells(fila1, ncol).Value
        If dato1 + dato2 = 0 Then
        Sheets("Coinciden").Cells(filaev, 1) = Sheets("Original").Cells(fila, 1)
        Sheets("Coinciden").Cells(filaev, 2) = Sheets("Original").Cells(fila, 2)
        Sheets("Coinciden").Cells(filaev, 3) = Sheets("Original").Cells(fila, 3)
        Sheets("Coinciden").Cells(filaev, 4) = Sheets("Original").Cells(fila, 4)
        Sheets("Coinciden").Cells(filaev, 5) = Sheets("Original").Cells(fila, 5)
        Sheets("Coinciden").Cells(filaev, 6) = Sheets("Original").Cells(fila, 6)
        Sheets("Coinciden").Cells(filaev, 7) = Sheets("Original").Cells(fila, 7)
        filaev = filaev + 1
        Sheets("Coinciden").Cells(filaev, 1) = Sheets("Original").Cells(fila1, 1)
        Sheets("Coinciden").Cells(filaev, 2) = Sheets("Original").Cells(fila1, 2)
        Sheets("Coinciden").Cells(filaev, 3) = Sheets("Original").Cells(fila1, 3)
        Sheets("Coinciden").Cells(filaev, 4) = Sheets("Original").Cells(fila1, 4)
        Sheets("Coinciden").Cells(filaev, 5) = Sheets("Original").Cells(fila1, 5)
        Sheets("Coinciden").Cells(filaev, 6) = Sheets("Original").Cells(fila1, 6)
        Sheets("Coinciden").Cells(filaev, 7) = Sheets("Original").Cells(fila1, 7)
        Sheets("Original").Cells(fila, ncol).EntireRow.Delete
        Sheets("Original").Cells(fila1 - 1, ncol).EntireRow.Delete
        conta = 1
        filaev = filaev + 1
        End If
     
    fila1 = fila1 + 1
    Wend
       If conta = 0 Then
            Sheets("No Coinciden").Cells(filade, 1) = Sheets("Original").Cells(fila, 1)
            Sheets("No Coinciden").Cells(filade, 2) = Sheets("Original").Cells(fila, 2)
            Sheets("No Coinciden").Cells(filade, 3) = Sheets("Original").Cells(fila, 3)
            Sheets("No Coinciden").Cells(filade, 4) = Sheets("Original").Cells(fila, 4)
            Sheets("No Coinciden").Cells(filade, 5) = Sheets("Original").Cells(fila, 5)
            Sheets("No Coinciden").Cells(filade, 6) = Sheets("Original").Cells(fila, 6)
            Sheets("No Coinciden").Cells(filade, 7) = Sheets("Original").Cells(fila, 7)
            Sheets("Original").Cells(fila, ncol).EntireRow.Delete
            filade = filade + 1
        End If
    conta = 0
    fila1 = 3
    Wend
 
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      

Ordenar datos insertar filas



Un amigo lector del foro me pregunta sobre como ordenar datos en Excel y realizar un Código o Macro de VBA para manipular los mismos. Para ello se requiere ordenar los datos por proveedor, una vez realizado este paso se debía insertar filas en el caso en estudio, dos filas desde el último proveedor ordenado y por cada uno de ellos, como así también agregar un total en una de las filas, en base a esa pregunta prepare este ejemplo que se adapta perfectamente a lo que necesita nuestro amigo, en ordenar datos automáticamente, ordenar datos al activar hoja y ordenar datos automáticamente en base a varios criterios; se puede observar otros ejemplos sobre como ordenar datos mediante macros de VBA.

A los fines de dar más utilidad a la macro para ordenar registros, se determina en forma variable cual es la última fila con datos, como así también cual es la última columna con datos, ya que en programación de VBA es muy común realizar bucles hasta la última fila o columna con datos, aquí se muestra como se determinan en forma variable, la ventaja radica que que no tenemos que estar agregando manualmente el número de filas o columnas a analizar, es decir puede servir para una base de datos de pocos registro como para una base de datos de 30.000 o más registros, no interesa ya que el rango a ordenar se determina mediante variables..

Esta macro se relación con otros post los cuales se sugiere ver a los fines de complementar, como ordenar datos, determinar la última fila o columna con datos, insertar filas, recorrer filas mediante un bucle, estos son algunos de los ejemplos donde se puede observar como se utilizan los códigos de VBA o macros de Excel a los fines de obtener el resultado deseado, en  la categoría Macros VBA encontrarás muchos ejemplos que puedes adaptar a tu proyecto.

En código de VBA que se presenta más abajo cuyo archivo de ejemplo puedes descargar del link del final, encontrarás primero la forma de ordenar los datos mediante VBA, es decir se tiene un listado de proveedores y otros datos , se intenta ordenar por proveedor y que debajo de cada proveedor se inserte un total dejando otra fila más en blanco.

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.



  

Para proceder a ordenar se crean variables asignado la la dirección de la última fila con datos como así también la última columna con datos, una vez realizado este procedimiento, se procede a insertar dos filas debajo del último proveedor ordenado y listado, insertada las dos filas en una de ellas se agrega el total de de la suma del campo total de cada proveedor, también se agrega formato de negrita.

Si se agregan más proveedores o datos a la base de datos, no se tiene más que apretar el botón para correr la macro y automáticamente se ordena por proveedor y agrega totales a cada proveedor, apretado el botón para correr la macro, primero se quitan todos los totales y filas vacías, y luego se procede a ordenar mediante VBA e insertar tal cual se describe en párrafos anteriores, para probar su funcionamiento sólo agrega otros datos a la base y haz click en el botón, automáticamente se ordena, se insertan las filas, se agrega el total y se pone el formato negrita al total.

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 Ordena()
Application.ScreenUpdating = False
Dim uf, uff, r1, r3, r, conta, k1, co, fila, fila2, conta1 As String
Dim x As Integer
Dim sum As Currency
'determines last row with data
uf = Sheets("hoja1").Range("A" & Rows.Count).End(xlUp).Row
uc = Sheets("hoja1").Cells("1," & Columns.Count).End(xlToRight).Address(False, False)
uc = Mid(uc, 1, 1)
r = 1
conta = 0
fila = 2
fila2 = 2
sum = 0
conta1 = 0
x = 2
'Antes de ordenar, elimina filas vacias
uff = Sheets("hoja1").Range("E" & Rows.Count).End(xlUp).Row
While x <= uff
MASTERCARD PAYONEER

If Sheets("hoja1").Cells(x, 1) = Empty Then
Sheets("hoja1").Cells(x, 1).EntireRow.Delete
x = x - 1
GoTo aqui:
End If
x = x + 1
aqui:
uff = Sheets("hoja1").Range("E" & Rows.Count).End(xlUp).Row
Wend

While Sheets("hoja1").Cells(1, r) <> Empty And conta = 0
If Sheets("hoja1").Cells(1, r) = "Proveedor" Then
k = Sheets("hoja1").Cells(1, r).Address(False, False)
co = Sheets("hoja1").Cells(1, r).Column
conta = 1
End If
r = r + 1
Wend
k1 = Mid(k, 1, 1)

'will help determine ranges to sort data
r1 = k & ":" & k1 & uf
r3 = "A1:" & uc & uf
'sorts the data
 ActiveWorkbook.Worksheets("hoja1").Sort.SortFields.Clear
 ActiveWorkbook.Worksheets("hoja1").Sort.SortFields.Add Key:=Range(r1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 With ActiveWorkbook.Worksheets("hoja1").Sort
        .SetRange Range(r3)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
 End With
Application.ScreenUpdating = False

While Sheets("hoja1").Cells(fila, co) <> Empty
 dato1 = Sheets("hoja1").Cells(fila, co)

 While Sheets("hoja1").Cells(fila, co) <> Empty And conta1 = 0
      dato2 = Sheets("hoja1").Cells(fila2, co)
      If dato1 = dato2 Then
      sum = sum + Sheets("hoja1").Cells(fila2, 5).Value
      Else
       Sheets("hoja1").Cells(fila2, co).EntireRow.Insert
       Sheets("hoja1").Cells(fila2, co).EntireRow.Insert
       Sheets("hoja1").Cells(fila2, co) = "SUMATORIA"
       Sheets("hoja1").Cells(fila2, co).Select
       Selection.Font.Bold = True
       Sheets("hoja1").Cells(fila2, 5) = sum
       Sheets("hoja1").Cells(fila2, 5).Select
       Selection.Font.Bold = True
       conta1 = 1
      End If
 fila2 = fila2 + 1
 Wend
 
fila = fila2 + 1
fila2 = fila
conta1 = 0
sum = 0
Wend
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      

Como crear un MsgBox VBA en Excel








COMO CONSTRUIR UN MSGBOX EN VBA PARA EXCEL

Normalmente en programación en VBA es preciso saber como se construye un MsgBox en VBA; cuando se buscan datos mediante macro o procedimientos de VBA, es útil que Excel informe el resultado de un procedimiento; por ejemplo si se están contando datos, tal vez se requiera obtener un informe con la cantidad de datos recontados; o quizás si se busca cierto dato y no se encuentra es preciso que queramos que Excel informe tal situación, en definitiva siempre se esta recurriendo a los MsgBox para mostrar información de las  Macros de  VBA, mostrar información de un proceso que se está realizando  o recibir información del usuario; por ende a todo aquel que programe una Macro le es imperioso que conozca su funcionamiento, muchas veces también es preciso darle al usuario la opción sobre que procedimiento seguir si se encuentra cierto dato buscado o sucede cierto evento.

En este tutorial pretendo mostrar como se construye un MsgBox, como así también como se utiliza un MsgBox, voy a mostrar las distintas formas de como  puede construirse un Msgbox, los valores que se le asigna  a cada botón, siendo útil cuando se le asigna a una variable el valor del MsgBox.

El MsgBox en forma sencilla se podría definir como un cuadro de diálogo, que crea una interfaz entre el usuario y el programa, estando a la espera que el usuario haga click en algún botón del mismo para realizar una acción, devolviendo un dato tipo Integer, correspondiente al botón elegido, más adelante se verán estos valores asignados  a cada botón.


La sintaxis es la siguiente MsgBox(prompt[, buttons][, title][, helpfilecontext]), donde prompt es la expresión en cadena que sale en el MsgBox, siendo su longitud máxima de 1024 caracteres, en caso que se use más de una línea se debe separar la misma con un caracter de retorno de carro como (Chr(13)), o un caracter de avance de linea o combinación de ambos, más adelante se vera el uso de (chr).

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 parte de la sintaxis denominada buttons, es opcional y especifica el número y tipo de botón a  mostrar en el MsgBox, esto será aclarado más adelante, en caso que no se inserte valor, toma el valor por defecto que es 0.

El title es también opcional, y no hace otra cosa que mostrar en la barra de título del cuadro de diálogo o MsgBox, el título que le proporcionamos al mismo, caso que no se ingrese se muestra el nombre de la aplicación. 

Helpfile y context son opcionales, el primero identifica el archivo de ayuda interactiva, es obligatorio especiicar context si se especifica helpfile; context es el número de contexto de Ayuda asignado por el programador o autor del tema de ayuda, normalmente no se utiliza, pero es bueno saberlo.

Bien, ahora que ya se ha explicado  la sintaxis del MsgBox, es preciso saber cuales son los valores que asigna VBA a caga botón o buttons que es el primer argumento obligatorio, seguidamente se detallan:


Constante Valor Descripción
VbOKOnly 0 Muestra solamente el botón Aceptar.
VbOKCancel 1 Muestra los botones Aceptar y Cancelar.
VbAbortRetryIgnore 2 Muestra los botones AnularReintentar e Ignorar.
VbYesNoCancel 3 Muestra los botones No y Cancelar.
VbYesNo 4 Muestra los botones  y No.
VbRetryCancel 5 Muestra los botones Reintentar y Cancelar.
VbCritical 16 Muestra el icono de mensaje crítico.
VbQuestion 32 Muestra el icono de pregunta de advertencia.
VbExclamation 48 Muestra el icono de mensaje de advertencia.
VbInformation 64 Muestra el icono de mensaje de información.
VbDefaultButton1 0 El primer botón es el predeterminado.
VbDefaultButton2 256 El segundo botón es el predeterminado.
VbDefaultButton3 512 El tercer botón es el predeterminado.
VbDefaultButton4 768 El cuarto botón es el predeterminado.
VbApplicationModal 0 Aplicación modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicación actual.
VbSystemModal 4096 Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes.
VbMsgBoxHelpButton 16384 Agrega el botón Ayuda al cuadro de mensaje.
VbMsgBoxSetForeground 65536 Especifica la ventana del cuadro de mensaje como la ventana de primer plano.
VbMsgBoxRight 524288 El texto se alinea a la derecha.
VbMsgBoxRtlReading 1048576 Especifica que el texto debe aparecer para ser leído de derecha a izquierda en sistemas hebreo y árabe.

Cabe aclarar que el grupo de valores de 0 a 5 describen el número  y tipo de botón mostrado en el MsgBox; el segúndo  grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botón predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el valor final del argumento buttons, se utiliza solamente un número de cada grupo.

A los fines de asignar el valor de un msgbox a una variable es preciso saber que valor devuelve cada uno de los botones de dicho cuadro de diálogo, estos valores se especifican en la table siguiente, recomiendo  leer con detenimiento, ya que en forma muy asidua se recurre a ellos:
MASTERCARD PAYONEER



Constante Valor Descripción
vbOK 1 Aceptar
vbCancel 2 Cancelar
vbAbort 3 Anular
vbRetry 4 Reintentar
vbIgnore 5 Ignorar
vbYes 6
vbNo 7 No

Si ha proporcionado helpfile como así también context, presionando F1 se obtiene el tema de ayuda correspondiente, de igual forma presionando la tecla ESC y si el MsgBox tiene  un botón cancelar, tendrá el mismo efecto que hacer click en dicho botón.



Aclaremos un poco más, el tema cuando se desea  saltar a la próxima línea, para ello usamos vbCrLf o chr (10) un ejemplo de ello sería

"El nivel de stock se encuentra en estado critico" &  chr(10) & "se sugiere su reposición inmediata"

En este ejemplo lo  que va a suceder es que al agregar chr(10), va  a aparecer en dos líneas de texto como lo muestra la imagen de la derecha.

Los ejemplos que se muestran a continuación son los más comunes, primero tenemos un MsgBox simple donde se muestra un texto solamente, no colocándose botones, por ende tomo por defecto el botón vbOkOnly; luego un MsgBox  donde se muestra un texto  y se concatena con el valor de una celda y posteriormente tenemos un MsgBox  cuyo valor se asigna a una variable y por último un ejemplo de MsgBox donde se asigna a una variable y se tiene varias líneas de texto. En el link del final podrás acceder a un archivo de ejemplo con varios msgbox, te recomiendo que veas su funcionamiento.

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.








1) Msgbox "Los datos fueron guardados con éxito"

2) Msgbox "El número de registros es" &  cells(1,1) 

3) MiVariable = Msgbox("El número de registros supera el máximo establecido", VbOKCancel, "Cantidad  de Registros")

En este caso depende del botón que el usuario seleccione, devolverá los valores establecidos más arriba, pudiendo utilizarlo para hacer  o no cierto procedimiento como por ejemplo, si el usuario hace click en OK, entonces la macro guardará en la celda A1 la palabra "Enero", en caso que haga click en otro botón entonces terminará el proceso con Exit Sub:

If mivariable = 1   Then
Sheets("hoja1").cells(1,1)= "Enero"
Else
Exit sub
End If

4) MiVariable = Msgbox("El número de registros supera" & Chr(10) & "el máximo establecido"  & Chr(10) & _
"Desea igualmente grabar los registros?", vbInformation + VbOKCancel, "Cantidad  de Registros")

If mivariable = 1   Then
MsgBox "Los registros se grabaron con éxito"
Else
MsgBox "Se descartarán los registros"
End If


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      

                          

Alegria de Padre






Humor Gráfico


MASTERCARD PAYONEER
Quizás te interese:
  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






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