Sie sind auf Seite 1von 88

Macro para proteger una o mas hojas de clculo

17/11/2014 byLuciaClotilde | 0 comments


1. Si se desea desarrollar una macro para proteger una de las hojas de
clculo de un archivo EXCEL con una macro, puede hacer lo siguiente:
Sub Ejemplo1 ()
Sheets(Hoja1).Protect Password:=123
End Sub
La Hoja1 de su archivo quedar protegida con la contrasea 123. Si
desea desproteger la hoja, deber ir a la pestaa Hoja1 del archivo y al
seleccionar Desproteger Hoja le pedir la contrasea.
Si no indica contrasea no necesitar ninguna contrasea para
desprotegerla. Es opcional.
2. Si se desea desarrollar una macro para proteger ms de una de las hojas
de clculo de un archivo EXCEL con una macro, puede hacer lo siguiente:
Sub Ejemplo2 ()
Dim i As Integer
For i =1 to Sheets.Count
Sheets(i).Protect Password:=123
End Sub
Para desproteger cada hoja podr proceder como se indica en el tem1 o
hacer una macro que las desproteja.
Sub Ejemplo3 ()
Dim i As Integer
For i =1 to Sheets.Count
Sheets(i).Unprotect Password:=123
End Sub
Desproteger una hoja al abrir un libro con Macros
11/11/2014 byAldo | 0 comments
En Excel es muy til tener la capacidad de ejecutar nuestras macros
automticamente al abrir un libro. En este caso veremos un par de formas
de desproteger una hoja o varias al abrir un libro de Excel.
Existen dos escenarios: la hoja est protegida con una constrasea, o
sin ella. Si esta protegida con un password se utiliza la propiedad Unprotect
Password:=PASS, el cdigo quedara de la siguiente manera:
Sub EjmDesprotegerConPassword()
Sheets(1).Unprotect Password:=CLAVE
End Sub
Ms generalmente, existen dos formas de desproteger hojas al abrir un
libro, asumiremos para estos casos que las hojas fueron protegidas sin
contrasea para simplificar el entendimiento de la subrutina. Si se
necesitara hacerlo para una hoja protegida por contrasea se seguira el
mismo procedimiento solo que utilizando la propiedad antes mencionada.
Forma 1:
Esta forma es la ms sencilla y consiste en tan solo nombrar a la
macro Auto_Open al crearla, y colocar dentro del procedimiento lo que
queremos que haga, en este caso desproteger la hoja actual o la hoja
deseada al abrir el libro. Para este ejemplo desprotegeremos la hoja actual
y el cdigo sera de la siguiente manera:
Sub Auto_Open()
ActiveSheet.Unprotect
End Sub

Forma 2:
Debido a que Excel solo nos permite crear una macro con el
nombre Auto_Open, esta segunda forma, tal vez la ms ortodoxa de hacerlo,
nos permite adems crear varias subrutinas (si se considera necesario) y
ejecutarlas al iniciar el libro. Esto si no buscramos algo tan simple como
desproteger una hoja al abrir un libro.
Consiste en entrar a ThisWorkbook y desde ah seleccionar las
opciones Workbook y Open, tal como se puede ver:
Para este ejemplo desprotegeremos 3 hojas simultneamente, para esto
deberemos utilizar el siguiente cdigo en un mdulo nuevo.
Sub DesprotegerHojas()
Worksheets(1).Unprotect
Worksheets(2).Unprotect
Worksheets(3).Unprotect
End Sub
Finalmente, podemos llamar a la macro deseada (que se puede encontrar
en cualquier mdulo dentro del proyecto) o pegarla en la subrutina que
abrimos inicialmente en ThisWorkbook. Como en este ejemplo hemos llamado
a nuestra subrutina DesprotegerHojas, colocamos el nombre de la macro
dentro del PrivateSub. As desprotegeremos las hojas en la posicin 1,2 y 3
automticamente al abrir el archivo.

5 Funciones en VBA imprescindibles


15/12/2014 byLesslie | 12 Comments

A continuacin vamos a describir 5 funciones que nos van a hacer de gran


utilidad programando con VBA

1.- FUNCIN PARA FECHAS Y NMEROS FORMAT

Esta funcin tomara una expresin ya sea en fecha o valor numrico y lo


devolver como una cadena con formato, es muy til.
Sintaxis: FORMAT (Expression, format)
Expression: es el valor ya sea en nmero o fecha para dar formato
Format: es el formato que se desea aplicar a la expresin
Para nmero
GENERAL NUMBER: muestra un nmero sin separador de miles y con todos
los decimales (444309943.34779)
CURRENCY: muestra y redondea a dos dgitos a la derecha de decimal.
(444309943.35)
STANDARD: muestra los separadores de miles, y redondea a dos dgitos a la
derecha de decimal. (444,309,943.35)
PERCENT muestra un valor en trminos porcentuales (multiplicado por 100)
y muestra 2 dgitos a la derecha del decimal. (44430994334.78%)
SCIENTIFIC muestra el numero en notacin cientfica (4.44E+08)

Para ver el ejemplo, hacer clic en el siguiente enlace. FUNCION FORMAT-


NUMBER

Para fecha
LONG DATE: Permite obtener la fecha en formato escrito totalmente
completo. (sbado, 27 de enero de 2001)
MEDIUM DATE: Permite obtener la fecha en formato completo (27-ene-01)
D : Permite obtener el nmero del da (27)
SHORT DATE fecha en formato corto (27/01/2001)
LONG TIME: permite obtener la hora actual en formato largo completo
(17:04:23)
SHORT TIME: hora en formato completo(17:04)
Para ver el ejemplo, hacer clic en el siguiente enlace. FUNCION FORMAT-
DATE

2.- FUNCIN PARA PRESENTAR MENSAJES MSGBOX

Esta funcin es importante porque nos ayudara a mostrar mensajes en un


cuadro de dialogo

Sintaxis: MSGBOX(prompt, buttons, title, helpfile, context)


Prompt(obligatoria): es el mensaje de cadena que se mostrara como
mensaje en el cuadro de dialogo.
Buttons (opcional): es la suma de los valores que especifican el nmero y
tipo de botones para mostrar, el estilo de icono a utilizar, la identidad del
botn predeterminado, y la modalidad del cuadro del mensaje.
Title (opcional): es la expresin que se mostrara en la barra de ttulo del
cuadro de dialogo.
Helpfile (opcional): identifica el archivo de Ayuda d usar para proporcionar
ayuda contextual para el cuadro de dialogo.
Context (opcional): expresin numrica que es el nmero de contexto de
Ayuda Asignado al tema de Ayuda apropiado por el autor

Ejemplo: Msgbox(prompt,buttons,title)
Para ver el ejemplo, hacer clic en el siguiente enlace. FUNCION MSGBOX

3.- FUNCIN PARA CONDICIN FOR NEXT

Realizara la repeticin de un conjunto de instrucciones un determinado


numero de veces, hasta que cumpla la condicin que hayamos
especificado.
Sintaxis: FOR (inicio de la variable) TO (limite de la variable)
(instrucciones que se repetirn)
Next variable

Ejemplo
Si deseamos que se muestre una ventana de dialogo 10 veces y en cada
una mostraremos el valor actual de la variable i que comenzara con 1 t
terminara con 5.
Para ver el ejemplo, hacer clic en el siguiente enlace. FUNCION FOR NEXT

4.- FUNCIN PARA NMEROS ROUND

Una de las principales funciones para nmeros es la Funcin Round, la cual


se usa para poder redondear un nmero con decimales. Si el valor a
redondear tiene parte decimal menor a 0.5 el valor obtenido ser igual a la
parte entera del nmero ingresado, pero si el valor a redondear tiene parte
decimal mayor o igual a 0.5 el valor obtenido ser igual al entero inmediato
superior del numero ingresado.

Sintaxis: ROUND(number, NumDigitsAfterDecimalAsLong)


Number: la expresin numrica que deseamos redondear (Obligatorio)
NumDigitsAfterDecimalAsLong: Cantidad de decimales a las que deseamos
redondear (opcional)

EJEMPLO
Si tenemos la siguiente lista de notas y deseamos redondearla con macros,
utilizaremos la funcin Round
Para ver el ejemplo, hacer clic en el siguiente enlace. FUNCION ROUND

5.- FUNCIN PARA TEXTO LCASE-UCASE

Estas funciones de cadena nos van ayudar a trabajar y a tratar cadenas de


caracteres.
Funcin LcASE y UcasEstas dos funciones se utilizan para convertir cadenas
de texto a minscula y mayscula.
En el caso de Lcase, cambia o convierte una cadena de texto a minscula.
Ucase funciona de la misma manera solo que en vez de convertir la cadena
a minscula, convierte todo el texto a mayscula.

EJEMPLO

Para ver el ejemplo, hacer clic en el siguiente enlace.FUNC


Calendario en Excel con VBA
01/12/2012 byFernandoSantos | 1 Comment

Un calendario es una cuenta sistematizada del transcurso del tiempo,


utilizado para la organizacin cronolgica de las actividades humanas.

El funcionamiento de este calendario es sencillo, pregunta a travs de un


INPUTBOX la fecha desde donde queremos que comience el calendario, y
tras todo el proceso de clculo, traslada a la Hoja de Excel, a partir de la
celda B4, la cabecera de mes y da de la semana, y los das del mes
correspondientes.

Pasos a seguir para crear un calendario en Excel con VBA.

En la hoja de clculo de Excel, se insertan los comandos de los controlex


activex, como se muestran en la siguiente imagen.

(Para mayor visualizacin de la imagen, hacer click en la misma)

En el botn de GENERAR CALENDARIO, se programa el siguiente


cdigo, que nos permitir generar un calendario anual.

Private Sub CommandButton1_Click()

Dim i As Integer

Dim fecha As Date


Dim aumento As Integer

Dim s As Integer

Dim contador

Range(B4).Select

Application.ScreenUpdating = False

s=1

fecha1 = CDate(InputBox(INGRESE FECHA, CON EL FORMATO dd/mm/aaaa,


Ejemplo: 01/01/2013 ))

contador = 0

For aumento = 0 To 11

contador = contador + 1

fecha2 = DateSerial(Year(fecha1), Month(fecha1) + aumento, Day(fecha1))

fecha = DateSerial(Year(fecha2), Month(fecha2), Day(fecha2))

ao = Year(fecha)

mes = Month(fecha)

inicio = Weekday(DateSerial(ao, mes, 1), vbSunday)

fin = Day(DateSerial(ao, mes + 1, 1) 1)

j=1

p = inicio

For x = 1 To fin

ActiveCell.Offset(j 1, p 1) = x

ActiveCell.Offset(-2, 0).Value = DateSerial(ao, mes, 1)

ActiveCell.Offset(-2, 0).NumberFormat = mmmm-yyyy


ActiveCell.Offset(-2, 0).Interior.ColorIndex = Int(Rnd * 55) + 1

ActiveCell.Offset(-1, 0).Value = Do

ActiveCell.Offset(-1, 1).Value = Lu

ActiveCell.Offset(-1, 2).Value = Ma

ActiveCell.Offset(-1, 3).Value = Mi

ActiveCell.Offset(-1, 4).Value = Ju

ActiveCell.Offset(-1, 5).Value = Vi

ActiveCell.Offset(-1, 6).Value = S

If p = 7 Then

p=0

j=j+1

End If

p=p+1

Next

ActiveCell.Offset(0, 9).Select

If contador = 3 Or contador = 6 Or contador = 9 Or contador = 12 Then

ActiveCell.Offset(9, -27).Select

End If

Next

Application.ScreenUpdating = True

End Sub
Al hacer click izquierdo en el Boton mencionado nos muestra una venta en
el que digitaremos la fecha con el siguiente formato dd/mm/aaaa y luego
pulsamos en aceptar para que nos genere el calendario.

(Para mayor visualizacin de la imagen, hacer click en la misma)

El botn Borrar Todo : sirve para limpiar la hoja de clculo y poder


generar un nuevo calendario. En este botn se programa lo siguiente.

Private Sub CommandButton2_Click()


Cells.Select
Selection.ClearContents
Range(A1).Select
End Sub

El botn CAMBIAR FUENTE : nos permite cambiar el tipo de letra y el


color del calendario. En este botn se programa lo siguiente.

Private Sub CommandButton3_Click()


Range(b2:z35).Select
With Selection.Font
.Name = Forte
.FontStyle = Italic
.Size = 14
.ColorIndex = 54
End With
End Sub

El botn MARCAR DOMINGOS : nos permite marcar los domingos


con el color caracterstico que lo representa en los calendarios que es el
color rojo. En este botn se programa lo siguiente.
Private Sub CommandButton4_Click()
Range(b4:b8).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(b13:b17).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(b22:b26).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(b31:b35).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(k4:k8).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(k13:k17).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(k22:k26).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(k31:k35).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(t4:t8).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(t13:t17).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(t22:t26).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(t31:t35).Select
Selection.Font.Bold = True
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range(A1).Select
End Sub.

Seleccionar rango en VBA


22/10/2016 byZAIN | 0 comments
Examinemos en este artculo las diversas formas en que se puede proceder
a seleccionar un rango de celdas.

Seleccionar una celda


Para seleccionar una celda primero se activa la hoja que voy a utilizar,
luego lo programo en VBA utilizando Range y select.
Sub SeleccionarCeldas()
Range(B7).Select
End Sub

Seleccionar una columna


Para seleccionar una columna primero se activa la hoja que voy a utilizar,
luego lo programo en VBA utilizando Range y select, pero lo que va dentro
de range es la columna que voy a seleccionar en este caso la columna
(B:B).
Sub SeleccionaColumna()
Range(B:B).Select
End Sub

Seleccionar celdas discontinuas


Para seleccionar una celda primero se activa la hoja que voy a utilizar,
luego lo programo en VBA utilizando Range y select, pero lo que va dentro
de range son las celdas que voy a seleccionar en este caso las celdas
(A4:A10, D10, B5:B15).
Sub SelecionarCeldasDiscontinuas()
Range(A4:A10, D10, B5:B15).Select
End Sub

Seleccionar columnas discontinuas


Para seleccionar columnas primero se activa la hoja que voy a utilizar, luego
lo programo en VBA utilizando Range y select, pero lo que va dentro de
range son las columna que voy a seleccionar en este caso las columnas
(A:A, D:F).
Sub SeleccionarColumnasDiscontinuas()
Range(A:A, D:F).Select
End Sub

Seleccionar una fila


Para seleccionar una fila primero se activa la hoja que voy a utilizar, luego
lo programo en VBA utilizando Range y select, pero lo que va dentro de
range es la fila que voy a seleccionar en este caso la fila (2:2).
Sub seleccionarfila()
Range(2:2).Select
End Sub

Seleccionar filas discontinuas


Para seleccionar una filas primero se activa la hoja que voy a utilizar, luego
lo programo en VBA utilizando Range y select, pero lo que va dentro de
range son las filas que voy a seleccionar en este caso las filas (2:2, 4:7).

Seleccionar celdas en una hoja especfica y utilizando la propiedad


Cells
Para seleccionar una celda en una hoja especfica primero activo la hoja,
luego lo programo en VBA utilizando worksheets,cells.select. Lo que va
dentro de cells es la celda (1,1) y en worksheets la hoja. Cabe reslatar que
se puede utilizar range por cells solo cambia la forma del argumento
range(A1)
Sub Seleccionar()
Worksheets(1).Cells(1, 1).Select
End Sub
Sub Seleccionar()
Worksheets(1).range(A1).Select
End Sub

Seleccionar el rango actualmente utilizado en la hoja activa


Se utiliza esta manera de seleccionar rango cuando tengo una base de
datos en Excel ya hecha. Para esto utilizo activesheet, usedrange, select de
la siguiente forma.
Sub SelccionarRangoUtilizado()
ActiveSheet.UsedRange.Select
End Sub

Seleccionar un rango de celdas utilizando la propiedad Cells y


Range
Para seleccionar un rango de celdas especfica en Excel se utiliza dos
formas: una con Cells y la otra con Range. En la primera dentro de range se
coloca cells (1,1) que representa la celda A1 seguido de una coma cells(5,5)
que representa la celda E5 luego se cierra parntesis de la siguiente forma.
Sub seleccionarRangos()
ActiveSheet.Range(Cells(1, 1), Cells(5, 5)).Select
End Sub
La segunda forma es ms rpida solo utilizando range (A1:E5).
Sub seleccionarRangos()
ActiveSheet.Range(A1:A5).Select
End Sub

Utilidad de seleccionar un rango de celdas


Al momento de seleccionar rango de celdas mediante VBA se automatiza
tareas que se pueden repetir constantemente. En consecuencia hay un
aumento de eficacia y eficiencia en el trabajo que realizas, puesto que
reducimos horas de nuestro trabajo en realizar tareas manuales al
convertirlas en automticas.

Descargue la relacin de ejemplos revisados en el siguiente


enlace: Seleccionar rango en vba

Navegar por el modelo de objetos en Excel


19/10/2016 byMelisaJhoana | 0 comments

El modelo de objetos en Excel, contiene una opcin de navegacin que se


utiliza en el lenguaje VBA. Esta opcin sirve para poder encontrar las
diferentes categoras de objetos que se pueden utilizar para el desarrollo de
una macro, tan solo presionando el boton F2. De esta manera, te permite
acceder y comprender de manera detallada todas las caractersticas de los
objetos disponibles.
Para comenzar a realizar estos cambios en la celda se debe digitar la
instruccin Application seguido de un punto (.), inmediatamente aparecer
otro cuadro con opciones de jerarqua inferior, tal como se muestra a
continuacin:

En caso no aparezca dicha lista puede emplear CTRL + BARRA


ESPACIADORA para que se aparezca la lista correspondiente.

Para activar o desactivar la aparicin de esta lista puede empelar desde el


editor de VBA, la opcin Herramientas luego Opciones y emplear la
opcin Lista de miembros automtica para que la lista aparezca o no.
Tenga en cuenta que en algunos casos es posible omitir este paso y solo
poner la instruccin de ultima jerarqua para cambiar la caracterstica de la
celda. Cabe resaltar que este tipo de omisin solo funcionar cuando se
utilice los objetos predeterminados del lenguaje VBA en Excel. Un ejemplo
de ello se muestra a continuacin, en donde primero se coloca toda la
instruccin

Sub Macros()
Application.ThisWorkbook.Worksheets(1).Range(A1).Value = 29
End Sub

para llegar a conseguir el cambio en la caracterstica de la celda A1, tal


como lo muestra la imagen.

En el caso de la omisin solo se coloca la instruccin


Sub Macros()
Range(A1) = 29
End Sub

para llegar a obtener el mismo resultado.

En sntesis, tal como se ha podido observar, el uso de estos dos mtodos


depende mucho del nivel de conocimiento o del orden que quiera tener la
persona a la hora de desarrollar sus macros.

Constantes en VBA
18/10/2016 byAnthonyChuTejada | 0 comments

Qu es una constante en VBA?

El nombre constante en Visual Basic se le otorga a los nmeros,


expresiones, caracteres que contienen un valor fijo o que nunca cambian en
la ejecucin del programa. Las constantes resultan excelentes para una
programacin ms prctica.
Por ejemplo, si necesitamos cambiar un valor en un futuro solo se tendr
que realizar un cambio en vez de modificar el valor en los diferentes puntos
que se ha utilizado y esperar errores de no haber realizado todos los
cambios necesarios.

Declaracin de constantes

Visual Basic cuenta con diversas constantes predefinidas utilizadas


principalmente para impresin y presentacin. Sin embargo, si usted desea
crear su propia constante se debe iniciar con la
instruccin Const seguidamente de la expresin y se debe de declarar
explcitamente en las declaraciones de la clase.

Se debe declarar una constantes despus de Sub o Funcin de la


declaracin del procedimiento para ello emplear la palabra Const, no
olvide separar las declaraciones con coma y espacio en caso se declare mas
de una constante en una lnea.

Las constantes en Visual Basic para Aplicaciones contienen las mismas


caractersticas que se emplean para la declaracin de la variables:

1. Comienzan con una letra


2. No reconoce los espacios
3. No debe contener ms de 255 caracteres
4. Poseen un nombre nico

mbito de las constantes en VBA

El mbito determina el rango de accin. Las constantes se pueden declarar


dentro de un procedimiento o en la seccin declaracin de mdulo, clase o
estructura:

Locales: Se puede utilizar nica y exclusivamente en el


procedimiento que esta se declare. Se debe declarar est en la seccin
declaracin del procedimiento.
Nivel de un Mdulo: Solo se puede utilizar en los procedimientos
del modulo donde esta se declaro. Se declararla en la seccin de
declaraciones del mdulo.
Pblicas: Se puede utilizar el cualquier procedimiento de cualquier
modulo.
Ejemplo de declaracin de constantes en VBA

A continuacin un ejemplo en el que es muy utilizada las constantes VBA:


La tasa de inters.

Nuestra Constante es tasa de inters.


Tipo de Dato: Single
Valor: 18%

El procedimiento en VBA ser de la siguiente manera:

Sub Procedimiento()
Const TasaInteres As Single = 0.18
Dim Prestamo1 As Long, Prestamo3 As Long
Dim Interes1 As Long, Interes3 As Long
Prestamo1 = 1000
Prestamo2 = 3500
Prestamo3 = 5000

Interes1 = Prestamo1 * TasaInteres


Interes2 = Prestamo2 * TasaInteres
Interes3 = Prestamo3 * TasaInteres

MsgBox El inters uno equivale a: & Interes1 & vbCrLf & _


El inters dos equivale a: & Interes2 & vbCrLf & _
El inters tres equivale a: & Interes3 & vbCrLf & _
La Tasa de Inters equivale a: & TasaInteres & ., _
1 + 48 + 0, Alerta

End Sub

Y nos brindar como resultado lo siguiente:


Archivos Adjuntos Anexos: Excel VBA: Constantes en VBA

Colecciones de objetos en excel


14/10/2016 byMarcoAntonio | 0 comments

Una coleccin es un objeto que puede ser utilizado para agrupar y


administrar objetos relacionados, en otras palabras, se utiliza un conjunto
de elementos ordenados a los que se puede hacer referencia como unidad.

En Excel podemos encontrar colecciones ya predeterminadas como la


coleccin de celdas, hojas, libros, grficos, controles, etc. Una coleccin es
similar a una matriz de objetos pues tambin se puede acceder a sus
elementos mediante un ndice.

En sntesis, la definicin del objeto colecciones en Excel se puede


resumir en los siguientes puntos:

Una coleccin es un objeto que contiene otros objetos.


Una coleccin proporciona una forma de acceso a los miembros que forman
parte de la coleccin .

Mtodos de las colecciones en VBA

Add, mtodo que consiste, o permite, agregar un elemento a un objeto


Collection de VBA.
Remove, permite retirar o quitar un elemento de un objeto Collection de
VBA.

Propiedades de las colecciones en VBA

Count, devuelve un valor de tipo Integer (entero) que contiene el nmero


de elementos que se encuentra en una coleccin.
Item, devuelve un elemento concreto de un objeto Collection de VBA por
medio de la posicin o clave que tiene el elemento en la coleccin.

Ejemplos de colecciones en VBA

Estos son ejemplos de algunas colecciones en excel:

CustomViews: Coleccin de las vistas personalizadas de un libro


PivotTables: Coleccin de tablas dinmicas contenidas en un libro
SlicerCaches: Coleccin de los objetos SlicerCaches asociados a un libro.
Connections: Coleccin de las conexiones a orgenes de datos para el
libro.
Charts: Coleccin de los grficos de un libro.

Cmo crear o eliminar un mdulo en Excel?


13/10/2016 bySebastianGuillermo | 0 comments

Crear un Mdulo en VBA

Primero: Debemos abrir nuestra versin de Excel

Segundo: Abrir el editor de Visual Basic


Para esto, entramos a la pestaa Programador (si estuviera en una
versin anterior a la 2013) o Desarrollador (si se tratase de la versin
2013 o superior) ubicada en la Cinta de Opciones. Ahora, hacer clic en la
opcin Visual Basic, ubicado al lado izquierdo del grupo llamado Cdigo.
Opcin alternativa: Presionando Alt + F11.
Tercero: Insertar modulo
Una vez abierta el editor, existen varias maneras de crear un mdulo. A
continuacin se mostrara una imagen donde se sealan las diferentes
opciones.

Desde la barra Estndar:

Desde el men Insertar:


Click con el botn derecho del mouse:

Editar nombre de un Mdulo:

Si desea cambiarle el nombre a los mdulos que usted ha creado,


seleccione el modulo al cual desee cambiar de nombre; luego dirjase a la
ventana de propiedades, ubicada debajo del explorador de proyectos. Ahora
solo debe de hacer clic en el nombre y comenzar a modificarlo.

En nuestro ejemplo modificamos el nombre original (Modulo2) por


Funciones
Eliminar Mdulo en VBA

Para eliminar un mdulo se puede utilizar dos opciones.

Opcin 1: Seleccione el modulo que desee eliminar. Luego, dirjase a la


barra herramientas y haga clic en Archivo, para seguidamente elegir la
opcin Quitar (nombre del mdulo). En el ejemplo sera: Quitar Modulo2
Opcin 2: Presione clic derecho en el mdulo que desee eliminar.
Finalmente, busque la opcin Quitar (Nombre del mdulo). En nuestro
ejemplo: Modulo2

objetos, propiedades y mtodos de macros en excel


30/08/2016 byDIEGORAUL | 0 comments

Objetos

En el mundo de la programacin el concepto de objeto tiene un significado


diferente al usual. En este mbito los objetos no son cosas materiales, sino
existen en forma de bytes y bits y es en general todo lo que vamos a poder
manipular en el Excel. Por ejemplo: una celda, una hoja y un libro son
objetos y de esta manera existen muchos ms objetos en Excel. Adems es
importante mencionar que todos los objetos tienen propiedades
(caractersticas) y mtodos (acciones), los cuales sern explicados ms
adelante.

Propiedades de los objetos

En este caso, como todos los objetos tienen propiedades, podemos


denominarlas como atributos que van a describir al objeto. Estas
propiedades describen como se ve el objeto, como se comporta, si puede
observarse, etc.

En el uso del VBA, nosotros podemos hacer dos cosas con las propiedades
de los objetos: la primera es examinar la configuracin de la propiedad,
mientras que la segunda es cambiar esta configuracin.

Por ejemplo, las celdas tienen una propiedad llamada valor, la cual es el
contenido que tiene cada celda. Nosotros podemos escribir un cdigo VBA
para mostrar el valor especfico de cada celda, esto se podra hacer de la
siguiente manera:

Sub mostrarvalor()

contenido= Worksheets(Hoja1).Range(A1).Value

MsgBox contenido

End Sub

Por otro lado, suponiendo que quieres cambiar la opcin o valor de esa
propiedad de la celda puedes aplicar tambin otra macro, ejemplo:

Sub cambiarvalor()

Worksheets(Hoja1).Range(A1).Value = 94.21

End Sub

Finalmente no hay que olvidarnos que la coleccin tambin es un objeto, y


como tal tiene sus respectivas propiedades. Por ejemplo, si queremos
determinar cuntos libros tenemos abiertos podemos usar la siguiente VBA
que nos mostrara con un mensaje lo que queremos saber:

Sub contarlibros()

MsgBox Workbooks.Count

End Sub
Mtodos

As como los objetos tienen propiedades tambin cuentan con mtodos. Un


mtodo es una accin que puedes realizar con un objeto, por decir, puede
cambiar las propiedades de un objeto o indicarle al objeto que realice algo
especfico.

En el primer ejemplo, veremos el mtodo ClearContents, el cual har que se


elimine el contenido de la celda A1 de la hoja que est activa:

Sub borrarrango()

Range(A1).ClearContents

End Sub

Adems los mtodos pueden tener uno o ms argumentos -un argumento


es un valor que le aade especificaciones a la accin a realizar, se escribe
luego de los mtodos separado por un espacio y entre ellos se separan por
una coma- para obtener un mejor resultado.

En el siguiente ejemplo, activamos la hoja 1 y luego copiamos el contenido


de la celda A1 a la B1, usando el mtodo de copiado (Copy Range).

Sub copiar()

Worksheets(Hoja1).Activate Range(A1).Copy Range(B1)

End Sub

Finalmente, como es de esperarse, como una coleccin es un objeto


entonces tambin tiene mtodos. Por ejemplo, la siguiente macro usa el
mtodo Add para aadir otro libro a la coleccin:

Sub nuevolibro()

Workbooks.Add

End Sub
donde escribir o colocar las macros?
07/02/2015 byBRIAN | 0 comments
Los procedimientos o funciones en el editor VBA se pueden escribir en
distintos lugares localizados en la ventana explorador de proyectos( en
hojas, mdulos y formularios)

1. Si deseas realizar tu procedimiento especficamente en una hoja del libro


trabajado puedes hacerlo de dos maneras:
Puedes colocar directamente el procedimiento en la hoja especfica
que se encuentra en la ventana de explorador de proyectos :
Se puede vizualizar que el procedimiento a realizar de abrir un
formulario(userform1) se ha colocado en la hoja2( al hacer click en el
boton de la hoja2 se abrir el formulario en dicha hoja)

En segundo lugar ,puedes colocar el procedimiento en un mdulo,


pero usando las funciones de VBA tales como worksheet para especificar en
que hoja se realizar.
En este ejemplo se puede ver que la palabra texto se escribir en la hoja
2 y celda B2 , usando la funcin worksheets.
2. Por otra parte, si deseas solo realizar un procedimiento en la hoja activa
solo necesitas hacerlo en cualquier mdulo.( en las opciones de
herramientas dar click a insertar-mdulo):

Este procedimiento se realizar en la hoja que ests trabajando de un libro


de excel( puede ser cualquier libro y hoja activa)
3. Finalmente, puedes escribir macros en botones de formulario( ver
adjunto):
Qu es WORKSHEETFUNCTION ?
01/11/2014 byRoberto | 0 comments

La funcin WorksheetFunction tiene por finalidad realizar emplear casi todas


las funciones que trae incorporadas Excel, WorksheetFunction permite
poder llamar a las funciones desde Visual Basic, tenga en cuenta que el
nombre de las funciones es similar a los nombres de las funciones en Excel
(en ingls), cada una de estas funciones a ser empleadas por medio
de WorksheetFunction son mtodos.

Mtodos que existen en WorksheetFunction

La lista correspondiente a los mtodos es extensa, puede acceder a dicha


lista desde el siguiente enlace.

AccrInt, AccrIntM, Acos, Acosh, Aggregate, AmorDegrc, AmorLinc, And,Asc,


Asin, Asinh
mas mtodos WorksheetFunction

Recuerde al momento de invocar a WorksheetFunction, puede acceder a la


lista completa de mtodos, si esta no aparece por defecto puede emplear
CTRL + ENTER a fin de que se despliegue esta relacin.

Propiedades de WorksheetFuncion

1.- Application: Hace referencia al programa Excel.

2.- Creator: Hace refecencia al texto XCEL a fin de identificar al aplicativo


que ha creado este objeto.

3.- Parent: Es una referencia al objeto WorksheetFunction.


Cmo usar WorksheetFunction?

Observemos el siguiente ejemplo:

Sub mini()

Set myRange = Worksheets(hoja1).Range(A1:K30)


Respuesta = Application.WorksheetFunction.Min(myRange)
MsgBox Respuesta

End Sub

Notemos que el uso de una funcin por medio de WorksheetFunction recibe


los parmetros de forma similar a como la funcin equivalente en Excel los
recibe, cuando se empieza a emplear WorksheetFunction es conveniente
controlar con mucho cuidado el paso de estos parmetros a fin de asegurar
la recepcin correcta de los mismos.

Qu es WORKSHEETFUNCTION ?
01/11/2014 byRoberto | 0 comments

La funcin WorksheetFunction tiene por finalidad realizar emplear casi todas


las funciones que trae incorporadas Excel, WorksheetFunction permite
poder llamar a las funciones desde Visual Basic, tenga en cuenta que el
nombre de las funciones es similar a los nombres de las funciones en Excel
(en ingls), cada una de estas funciones a ser empleadas por medio
de WorksheetFunction son mtodos.
Mtodos que existen en WorksheetFunction

La lista correspondiente a los mtodos es extensa, puede acceder a dicha


lista desde el siguiente enlace.

AccrInt, AccrIntM, Acos, Acosh, Aggregate, AmorDegrc, AmorLinc, And,Asc,


Asin, Asinh
mas mtodos WorksheetFunction

Recuerde al momento de invocar a WorksheetFunction, puede acceder a la


lista completa de mtodos, si esta no aparece por defecto puede emplear
CTRL + ENTER a fin de que se despliegue esta relacin.

Propiedades de WorksheetFuncion

1.- Application: Hace referencia al programa Excel.

2.- Creator: Hace refecencia al texto XCEL a fin de identificar al aplicativo


que ha creado este objeto.

3.- Parent: Es una referencia al objeto WorksheetFunction.

Cmo usar WorksheetFunction?

Observemos el siguiente ejemplo:

Sub mini()

Set myRange = Worksheets(hoja1).Range(A1:K30)


Respuesta = Application.WorksheetFunction.Min(myRange)
MsgBox Respuesta
End Sub

Notemos que el uso de una funcin por medio de WorksheetFunction recibe


los parmetros de forma similar a como la funcin equivalente en Excel los
recibe, cuando se empieza a emplear WorksheetFunction es conveniente
controlar con mucho cuidado el paso de estos parmetros a fin de asegurar
la recepcin correcta de los mismos.

Ejemplos de WorksheetFuncion
1. Funcin DIAS.LAB
2. Funcin WorksheetFunction.IsText
3. WorksheetFunction.Median
4. Funcin WorksheetFunction.Roman
5. WorksheetFunction.CountA
6. Funcin WorksheetFunction.IsLogical
7. Funcin WorksheetFunction.SumProduct
8. Funcin WorksheetFunction.IsOdd
9. Funcin WorksheetFunction.And
10. Funcin Worksheet.IsNumber
11. Funcin WorksheetFunction.Sum
12. Funcin WorksheetFunction.Or
13. Funcin WorksheetFunction.Fact
14. WORKSHEETFUNCTION.MAX para el promedio de notas
15. Funcin WorksheetFunction.Average
16. Uso de WorksheetFunction.CountBlank
17. Uso de WorksheetFunction.CountA
18. Uso de WorksheetFunction.RandBetween
19. Uso de WorksheetFunction.Vlookup

Funcin DIAS.LAB
12/06/2015 byMARCOANTONIO | 0 comments

Funcin DIAS.LAB

Esta funcin devuelve el nmero total de das laborales entre dos fechas
determinadas, con la posibilidad de sealar los das vacacionales o festivos
a fin de que no se consideren en el conteo final.

Por ejemplo, es posible calcular la cantidad de das laborales que tom la


elaboracin de un proyecto como la formulacin de un Plan de Desarrollo
Concertado.

Para esto primero se debe registrar las fechas de inicio y fin del proyecto, y
los das festivos como se muestra a continuacin:

A continuacin, se inserta la frmula DIAS.LAB indicado los siguientes


argumentos para la funcin:
Fecha inicial: es el primer campo obligatorio y marca el inicio del periodo de
tiempo que se contabilizar:

Fecha final: segundo campo obligatorio y marca el fin del periodo de tiempo
que se contabiliza.

Vacaciones: es opcional y sirve para no considerar estas fechas en el conteo


de das laborales.

Una vez que son ingresados los campos solicitados, la funcin calcula la
cantidad de das laborales que dur el proyecto, sin considerar los das
festivos.
Funcin DIAS.LAB con Macros

Realizar este proceso a travs de una macro resulta muy til si se trabaja
contantemente con proyectos, en las oficinas de recursos humanos para
calcular los das laborados por el personal o en cualquier otra situacin que
requiera el conteo de los das laborales entre dos fechas determinadas.

Para programar una macro con la cual se pueda calcular la cantidad de das
laborales entre dos fechas, se puede usar la siguiente estructura para el
cdigo obtenida con el grabador de macros

Sub Dias_laborados()

Macro1 Macro

Range(F4).Select

ActiveCell.FormulaR1C1 = =NETWORKDAYS(RC[-3],R[1]C[-3],R[2]C[-
3]:R[10]C[-3])

End Sub
De forma alternativa se puede emplear la
funcin WorksheetFunction.NetworkDays para acceder a usar la
funcin Funcin DIAS.LAB en Excel.

Sub dias_laborados()

Range(F7) = WorksheetFunction.NetworkDays(Cells(4, 3), Cells(5, 3),


Cells(6, 3).Resize(9, 1))

End Sub

Estos cdigos permiten realizar el mismo clculo del ejemplo sin macros,
pero con la ventaja de que la ejecucin se realiza de forma casi automtica
y se pueden

Funcin WorksheetFunction.IsText
20/02/2015 byCARLOSANDRE | 6 Comments

La Funcin WorksheetFunction.IsText sirve para confirmar que el valor de una celda


es texto o no lo es. En caso que sucede lo primero el resultado de la funcin ser
Verdadero caso contrario ser Falso.

La sintaxis de esta funcin es WorksheetFunction.IsText(Arg1). A continuacin se


presentara un ejemplo en el cual se utiliza esta funcin.

Ejemplo:
Segn la ley de Reilly, el rea de Mercado es la distancia mxima que una
persona se trasladara para comprar. La frmula para el rea de Mercado de la ciudad
pequea ( menor poblacin) hacia otra grande ( mayor poblacin) ciudades es la
siguiente:

Para el caso de la pequea es la Distancia entre las dos ciudades el rea


de mercado de mercado de la ciudad pequea.

En este ejemplo, usaremos las distancias entre los siguientes distritos de


Cajamarca:

Primero copiamos en la primera hoja reas de Mercados un cuadro de


doble entrada donde se colocan las distancias.
Luego en en la siguiente hoja se coloca un cuadro para colocar el nombre
de los distritos.

Luego utilizamos el siguiente macros que permite que aparezca un


recuadro con la distancia entre el distrito 1 y el distrito dos. En caso de que
se ingrese un nmero por error saldr un cuadro con el siguiente mensaje
Usted ingres un nmero. la Funcin Istext permite detectar si lo escrito
debajo de distrito 1 y distrito 2 es un nmero o el nombre de un distrito.

El Macros es el siguiente:

Sub proceso2()
Dim Rango1 As Object
Dim Rango2 As Object
distrito1 = Worksheets(Clculo del rea de mercado).Range(c5).Value
distrito2 = Worksheets(Clculo del rea de mercado).Range(d5).Value
Set Rango1 = Worksheets(reas de Mercado).Range(A1:AA1)
Set Rango2 = Worksheets(reas de Mercado).Range(A1:AA26)
If WorksheetFunction.IsText(distrito1) And
WorksheetFunction.IsText(distrito2) Then
concatenar = WorksheetFunction.Match(distrito2, Rango1, 0)
AreaDeMercado = WorksheetFunction.VLookup(distrito1, Rango2,
concatenar, False)
MsgBox El rea de Mercado de & distrito1 & se extiende &
AreaDeMercado & kilmetros & hacia & distrito2
Else
MsgBox Usted ingres un nmero
End If

End Sub

WorksheetFunction.Median
19/02/2015 byRICARDOJOS | 3 Comments

La funcin worksheetfunction.median sirve para calcular la media de un


determinado rango de celdas en una hoja determinada.

Un ejemplo claro de cmo puede funcionar la frmula en la vida real es para


hacer comparaciones, a grandes rasgos, es el programa creado y descrito a
continuacin:

Private Sub CommandButton1_Click()

Dim m As Integer, n As Integer

m = WorksheetFunction.Median(Range(A2:A12))

n = WorksheetFunction.Median(Range(B2:B12))

Select Case media

Case n < m

MsgBox se ha mejorado ventas

Case n > m

MsgBox se han reducido las ventas

Case n = m

MsgBox se han mantenido las ventas

End Select

End Sub
Este programa describe las comparaciones entre las ventas de 2 meses
cualesquiera. Para eso, se procede a calcular las medias de los valores con
la funcin worksheetFunction.Median y otorgndole nombre a las
variables a comparar siendo n y m las medias de los valores evaluados.
Posteriormente, mediante la herramienta select case se proceder a
realizar las respectivas comparaciones y dependiendo de estas aparecer
un mensaje sobre si las aumentas han aumentado, disminuido o son iguales
en promedio.

Este programa es especialmente til para negocios a como restaurantes o


cualquier lugar de venta, en donde se requiera comparar los volmenes
vendidos de determinado producto o el dinero total percibido en un
determinado periodo.

Funcion worksheetfunction.median

Funcin WorksheetFunction.Roman
14/02/2015 byMARAALEJANDRA | 1 Comment

El WorksheetFunction contiene funciones integradas que se pueden usar de


la misma manera que las funciones de una hoja hoja de Excel.

Para poder usar cualquier funcin WorksheetFunction, se debe nombrar


primero al objeto Application.

Ejemplo: Application.WorksheetFunction.Roman

La funcin WorksheetFunction.Roman(arg1, [arg2]) es equivalente a


=NUMERO.ROMANO(nmero, [formal]) que se usa en las celdas de Excel
para convertir un nmero arbigo (1,2,3,..) en un nmero romano (I,V,X, ).
La diferencia radica en que la primera se puede incluir en el lenguaje VBA
para programar una macro. La notacin de esta funcin en VBA es:
Las restricciones de la funcin WorksheetFunction.Roman son las mismas
que para Numero.Romano, por lo tanto los nmeros que convierte solo
pueden ser mayores a cero y menores a 4000 (0< x < 4000).

Ejemplo:

Cuando hablamos de ciclos o semestres en la universidad se usan nmeros


romanos en vez de los arbigos, por tanto:

Sub Ejemplo()

Arabigo = Worksheets(Hoja1).Range(D4)

Romano = Application.WorksheetFunction.Roman(Arabigo)

Range(E4) = Romano

End Sub

WorksheetFunction.CountA
02/11/2014 byAlessandraVanessa | 3 Comments

La funcin WorksheetFunction.CountA cuenta el nmero de celdas


que contengan datos o valores* que existen en un rango o matriz. Es
decir, la Funcion Count se utiliza cuando el usuario no necesite contar
valores lgicos, texto o valores de error.

WorksheetFunction.CountA( Arg1,Arg2)

* NOTA:

Ntese que un valor es todo tipo de informacin, incluidos texto vaco ()


y valores de error. No se considera un valor a las celdas vacas.

Ejemplos:

Encontrar ltima celda

Dim lngUltimaCelda As Long

If WorksheetFunction.CountA(Cells) > 0 Then

lngUltimaCelda = Cells.Find(What:=*, After:=[A1], _

SearchOrder:=xlByRows, _

SearchDirection:=xlPrevious).Row

MsgBox lngUltimaCelda

End If

Contar el nmero de celdas que contienen datos

Sub ContarCeldas()
Dim n As Integer

n = Application.WorksheetFunction.CountA(Selection)

MsgBox n & celdas que contienen datos

End Sub

Funcin WorksheetFunction.IsLogical
01/11/2014 byFernandoDaniel | 1 Comment

La funcion WorsheetFunction.Islogical es una funcin de VBA que


comprueba que comprueba si un valor es un valor lgico (true o false) y
devuelve verdadero o falso segn sea el caso.
El cdigo mostrado comprueba si un valor es lgico, se aprecia mejor en una compilacin paso a paso con F8

El cdigo al interactuar con la interfaz Excel devuelve el resultado en el


idioma (en este caso verdadero o falso) en que esta configurada la interfaz
Excel.

Para mostrar lo mencionado, ejecutamos el siguiente cdigo con el valor de


la celda igual a true

El cdigo al momento de interactuar considera el idioma en la cual esta configurado sta

Ahora compilaremos el mismo cdigo con el valor de la celda igual a


verdadero

Compilacin del cdigo con el valor de la celda igual a verdadero


Funcin WorksheetFunction.SumProduct
01/11/2014 byKatherineYahaira | 3 Comments

Esta funcin es equivalente a la usada directamente en cualquier celda de


Excel =SUMAPRODUCTO(matriz1, matriz2,), con la diferencia de
que puede ser incluida en el lenguaje VBA para programar una macro. La
notacin de esta funcin en VBA es :
Application.WorksheetFunction.SumProduct(arg1,arg2,).

Esta funcin multiplica cada uno de los componentes de las matrices con su
semejante en la otra matriz, y devuelve la suma de esos productos. Para
ello, las matrices deben tener las mismas dimensiones, es decir, todas las
matrices deben tener el mismo nmero de filas y de columnas. Esto se
ilustra mejor en el siguiente ejemplo:

funcin sumaproducto

Para aplicar esta funcin en VBA, desarrollaremos el siguiente ejemplo, en


el que tenemos la cantidad vendida de ciertos productos y sus
correspondientes precios unitarios, entonces para hallar el importe total se
puede usar una macro como se muestra a continuacin:
En este ejemplo se us la matriz1 cantidad con 7 filas y 1 columna y la
matriz2 precio con las mismas dimensiones, ya que ese es el requisito
para esta funcin. Luego, se multiplicaron los elementos de cada matriz,
para finalmente sumarlos. De manera similar, podemos usar la funcin
WorksheetFunction.SumProduct para obtener promedios ponderados, como
se muestra en el siguiente ejemplo:
Funcin WorksheetFunction.IsOdd
01/11/2014 byJorge | 0 comments

Descripcin:

Esta funcin que al espaol se traduce como Es.Impar tiene como


objetivo determinar si numero es impar dando como resultado el enunciado
de verdadero si fuese un numero par caso contrario el enunciado resultante
sera falso. Cabe resaltar que el nmero es el valor a probar y si el nmero
no es un numero entero, se trunca. Tambin hay que tener en cuenta que si
el numero no es numrico ISODD da como resultado el # valor! Que
significa valor de error.

EntornoVBA:

Para generar una macro conteniendo esta funcin podemos usar el


siguiente cdigo que genera el resultado de verdadero o falso dependiendo
si el numero indicado es impar o no en la celda seleccionada, gracias a esta
funcin se puede distinguir dentro de una relacin larga cuales son impares
y cules no sin la necesidad de hacerlo uno por uno lo cual permite ahorrar
tiempo.

En la siguiente macro se visualiza la palabra JM la cual contiene el valor


dentro de la celda C4 en la Hoja 1 y para luego indicar la ubicacin(celda
C7) donde quiero que salga el resultado aplicando la funcin ISODD a JM:

Sub Jorge()
JM = Worksheets(Hoja1).Range(C4).Value
Worksheets(Hoja1).Range(C7).Value = WorksheetFunction.IsOdd(JM)
End Sub

En el ejemplo 1 nos da el resultado falso ya que el numero indicado es par.


En cambio en el ejemplo 2 nos da el resultado verdadero ya que el numero
indicado es impar cumplindose lo solicitado por la funcin.

Funcin WorksheetFunction.And
01/11/2014 bySergioArturo | 1 Comment

Funcin WorksheetFunction.And

Visual Basic es un lenguaje de programacin dirigido a manejar las


propiedades y tener control sobre objetos. Los objetos son todos los
componentes de la aplicacin Excel que obedecen a una jerarqua en
funcin de sus propiedades, es decir un objeto puede contener otros
objetos. Por ejemplo, un libro es un objeto que contiene hojas y estos a su
vez contienen celdas. Tanto las hojas y las celdas son objetos al igual que el
libro.
Asimismo, VBA nos ofrece herramientas que nos facilitan la programacin.
Algunas de esas herramientas son las funciones integradas que nos
permiten realizar clculos y operaciones de manera prctica.

El WorksheetFunction es un objeto que contiene funciones integradas con las


que podemos trabajar como cualquier funcin de una hoja de trabajo en
Excel. El WorksheetFunction se encuentra dentro del objeto Application, por lo
tanto, para poder acceder a cualquier funcin necesitamos nombrar
primero al objeto Application y posteriormente WorksheetFunction de la siguiente
manera:

Application.WorksheetFunction

La funcin WorksheetFunction.And es una funcin integrada que tiene dos


posibles resultados TRUE (verdadero) o FALSE (falso). Esta funcin puede
manejar varias expresiones lgicas de las cuales basta que una de ellas sea
FALSE para que el resultado de la funcin sea FALSE. Entonces, para poder
usar la funcin debemos escribirla as:

Application.WorksheetFunction.And

Funcin Worksheet.IsNumber
01/11/2014 byLeidy | 0 comments

La funcin IsNumber en Excel se usa cuando se desea confirmar si el valor


que contiene la celda o valor buscado es numrico.

De esta manera si el valor es un nmero, la funcin IsNumber mostrar


VERDADERO. Si el valor no es numrico, la funcin Isnumber mostrar
FALSO.

La sintaxis es la siguiente: ISNUMBER (Valor)

Un ejemplo didctico acerca de esta funcin aplicado a mi centro laboral


sera el tema de los centros de coste y rdenes internas, los cuales son
denominaciones para asignar gastos o ingresos de acuerdo a las unidades
de negocio que en mi caso vienen a ser representadas por las salas
tragamonedas. Cabe mencionar que los centros de coste estn
representados por caracteres alfanumricos, mientras que las rdenes
internas tienen caracteres numricos y al obtener ambos objetos en una
misma columna, se necesita distinguir slo las rdenes internas para lo cual
se usar la funcin IsNumber, mostrado en el siguiente cuadro.

El resultado se visualiza en la tercera columna, y nos muestra VERDADERO


si el objeto de coste es una orden porque est identificado con nmeros,
mientras que cuando se identifica un centro de coste muestra FALSO por
estar conformado por nmeros y letras.

En el lenguaje VBA se aplica la funcin de la siguiente manera:

Funcin WorksheetFunction.Sum
01/11/2014 byCarlosAlfredoJulian | 3 Comments

Funcin WorksheetFunction.Sum
La Funcin WorksheetFunction.Sum nos permite obtener el resultado de la
suma de los argumentos ingresados a la funcin, esta funcin devuelve el
resultado el cual es del tipo DOUBLE. Los tipos de argumentos que acepta
esta funcin son del tipo numrico, bolean (verdadero, falso) donde
VERDADERO tendr el valor de 1 y FALSO el valor de 0. Adems, la
funcin WorksheetFunction.Sum en VBA solo acepta 30 argumentos como
mximo y un argumento como mnimo.

Si solo si un argumento esta compuestos por un rango de celdas, es decir,


el argumento es un vector , la funcin WorksheetFunction.Sum solo tomara
en cuenta los valores numricos de este argumento, en otras palabras
ignorara los componentes del vector que sean del tipo lgico (VERDADERO
o FALSO), las celdas vacas, y los textos contenidos en el vector.

Sintaxis:

Application.WorksheetFunction.Sum(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8,


Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20,Arg21,
Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)

Si utilizamos mas de 30 argumentos en la funcin , nos mostrara el


siguiente error:

Ejemplo 1

Aplicar la funcin WorksheetFunction.Sum con un rango de celdas


Lo que hace este cdigo es leer los valores de las celdas desde A1 hasta
A10, luego aplicamos la funcin WorksheetFunction.Sum

e imprimimos el resultado en la celda C1 y lo mostramos en un message


box.

Obteniendo el siguiente resultado:


Ejemplo 2

Aplicar la funcin WorksheetFunction.Sum con un rango de celdas (que


incluya celdas vacas y valores lgicos), con un argumento numrico, y con
un argumento lgico.
Esta funcin carga los valores de A1 hasta A5 y lo asigna a una
variable(vector),carga un valor numrico constante y lo asigna a la variable
b y carga el valor de la celda B1 (valor numrico).Finalmente, Suma
todos estos argumentos con un argumento de valor lgico (en este caso
TRUE=1).

La funcin WorksheetFunction.Sum ignorara las celdas vacas y los valores


lgicos ,en este caso lo valores lgicos del primer argumento, cabe resaltar
que la ya mencionada funcin suma el valor lgico del ultimo argumento ,
el cual hace que el resultado de la suma final se 124.1

Usando un messagebox imprime el resultado.


Funcin WorksheetFunction.Or
31/10/2014 byJosLuis | 1 Comment

La funcin WorksheetFunction.Or nos permitir analizar la veracidad o


falsedad de una cantidad determinada de argumentos, estos argumentos
son valores lgicos que pueden ser VERDADERO o FALSO, para emitir
finalmente un resultado que tambin puede ser VERDADERO o FALSO.
Las condiciones para cada resultado son las siguientes:

La funcin devolver el valor VERDADERO si al menos uno de los


argumentos es VERDADERO.

La funcin devolver el valor FALSO si todos los argumentos son


FALSOS.
La sintaxis, entonces, de esta funcin ser: O(valor_lgico1, valor_lgico2,
valor_lgico3) , se pueden introducir de 1 a 255 valores lgicos o
condiciones.

Cabe resaltar, que como bien se sabe, las funciones del tipo
WorksheetFunction no son propias de VBA, ser necesario emplear la forma:
application.WorksheetFunction para poder hacerlas compatibles con este
lenguaje.

A continuacin se presenta un ejemplo de la funcin WorksheetFunction.Or

Se coloc en la celda A1 el valor de 5 y en la celda A2 el valor de 20.

Se definieron las variables a utilizar y aquellas condiciones (argumentos de


la funcin) fueron declaradas como Boolean, para que de acuerdo a cierta
condicin nos devuelvan un valor lgico el cual se usar posteriormente al
momento de aplicar la funcin.

Una vez llevado a cabo el cdigo en VBA, la condicin1 y condicin2


obtuvieron el valor de FALSO mientras que la condicin3 obtuvo el valor
de VERDADERO por lo que el resultado final, luego de aplicar la funcin
sobre estas 3 condiciones, sera VERDADERO como se muestra a
continuacin:
Funcin WorksheetFunction.Fact
30/10/2014 byJhonAlexanderSteglish | 0 comments

El comando Worksheetfunction.fact se basa bsicamente en la operacin


factorial de un nmero o, como se trabaja en Visual Basic, con un sistema
de argumentos ya sea para el desarrollo digitalizado de la informacin o
para disminuir el tiempo de respuesta que demorara desarrollar un
ejercicio de tal magnitud.

En Excel, la funcin factorial se define en principio como el producto de


todos los nmeros enteros positivos desde 1 hasta n o numero dado.
Como ya he mencionado filas ms arriba, la funcin FACTORIAL o Fact se
aplicara en visual Basic mediante argumentos que validen la operacin.

Para esto mostrare algunas imgenes que demuestren esta premisa.

Como podemos percibir en la imagen, al ejecutar el comando


Worksheetfunction.fact, esta nos muestra la ventana donde podemos
revisar todos las macros creadas. En esta imagen solo trabajar con una
macro. Como he escrito al ejecutar el comando, las macros ya existentes
nos servirn como argumentos para el desarrollo y validez del comando.

Ejemplo 1

Un ejemplo simple desarrollado con el comando worksheetfunction.fact esta


demostrado en esta imagen.

Esta imagen desarrolla un ejemplo basico debido a que solo desarrolla una
operacion simple de factorial con comandos programados en Visual Basic.

Ejemplo 2

Podemos utilizar la formula matematica de combinacion para establecer


una patron en Visual Basic que cumple la formula.
Al momento de ejecutar los comandos creados en Visual Basic, el comando
inputbox nos pedira los numeros que necesitaremos
para este complemente la formula.

De manera que podemos utilizar el visual Basic para ingresar los nmeros y que estos sean calculados por Excel.

Ejemplo 3

Combinatoria con repeticin


Formulado en visual Basic

Al igual que en el ejemplo anterior, la formula recreada en Visual Basic desarrollar una operacin
tambin compleja la cual nos pedir la informacin necesaria para poder desarrollar la pregunta.

Por todo ello, el comando WorksheetFunction.Fact aporta una reduccin


de tiempo en el desarrollo de los problemas con factorial.
WORKSHEETFUNCTION.MAX para el promedio de notas
20/07/2013 byFernandoSantos | 31 Comments

La funcin WorksheetFunction.Max nos indica el mximo nmero que se


encuentra en un rango definido. A pesar de que las funciones de tipo
WorksheetFunction no son propias del lenguaje VBA, se puede trabajar con
las mismas en este lenguaje usando: application.worksheetfunction..

Descargar Ejemplo de WORKSHEETFUNCTION.MAX

A continuacin presento un ejemplo simple para entender el uso de esta


funcin:

1. En una lista de notas de una clase, lo que se quiere hacer es encontrar la


mxima nota y publicarla mediante un mensaje de aviso, para que de esta
manera el profesor sepa cmo va el promedio de notas en su curso. La lista
es la siguiente:
2.Para logar esto, primero definimos las variables que se van a usar y luego
se aplica la formula applitacion.worksheefunction.max para indicar la nota
mxima. Debo de indicar que debido a que no se sabe la cantidad de
alumnos por ciclo, se realiza una lectura de las filas ocupadas como se
muestra a continuacin:

3. Finalmente se obtiene este resultado mediante un mensaje:


Funcin WorksheetFunction.Average
13/07/2013 byFernandoSantos | 10 Comments

Con la funcin WorksheetFunction.Average Excel devuelve el promedio


aritmtico de una lista de datos o argumentos.

La sintaxis para utilizar la funcin sigue la lgica de considerar todos los


valores que quieren ser usados para hallar el promedio. Se puede
codificar de la siguiente manera:

= expression.Average (Arg1, arg2, arg3, arg255)

Para poder aplicar esta funcin usaremos el ejemplo de una cadena de


locales de venta de Frozen Yogurt. Lo que se plantea es poder hallar el
ticket promedio diario de consumo de uno de los locales de la cadena.

Para ello necesitamos contar con la lista de transacciones realizadas


durante el da por dicho local. En la hoja de clculo figuran los montos
consumidos en el local.

Los montos son los siguientes


Se cre un formulario que muestra tres botones: Calcular, Limpiar y Cerrar.

El cdigo usado es el siguiente:

Private Sub CommandButton1_Click()

TextBox1.Value = Application.WorksheetFunction.Average(Range(Cells(3, 2),


Cells(13, 2)))

End Sub

Private Sub CommandButton2_Click()

UserForm1.Hide

End Sub

Private Sub CommandButton3_Click()

TextBox1 =
End Sub

El valor resultante es el consumo promedio de los clientes del local durante un da.

Uso de WorksheetFunction.CountBlank
07/07/2013 byFernandoSantos | 6 Comments

La funcin countblank es un contador que lee espacios en blancos

El siguiente ejemplo tiene como objeto hacer el uso de la funcin countblank o


contar.blanco mediante un ejemplo de control de asistencia de alumnos.
WORKSEETFUNCION.COUNTBLANK

en la cual nos va dar el siguiente resultado


WorksheetFunction.CountA
02/11/2014 byAlessandraVanessa | 3 Comments

La funcin WorksheetFunction.CountA cuenta el nmero de celdas


que contengan datos o valores* que existen en un rango o matriz. Es
decir, la Funcion Count se utiliza cuando el usuario no necesite contar
valores lgicos, texto o valores de error.

WorksheetFunction.CountA( Arg1,Arg2)

* NOTA:

Ntese que un valor es todo tipo de informacin, incluidos texto vaco ()


y valores de error. No se considera un valor a las celdas vacas.

Ejemplos:

Encontrar ltima celda

Dim lngUltimaCelda As Long

If WorksheetFunction.CountA(Cells) > 0 Then

lngUltimaCelda = Cells.Find(What:=*, After:=[A1], _

SearchOrder:=xlByRows, _

SearchDirection:=xlPrevious).Row

MsgBox lngUltimaCelda

End If

Contar el nmero de celdas que contienen datos


Sub ContarCeldas()

Dim n As Integer

n = Application.WorksheetFunction.CountA(Selection)

MsgBox n & celdas que contienen datos

End Sub

Uso de WorksheetFunction.RandBetween
04/02/2013 byFernandoSantos | 7 Comments

Descripcin

Esta funcin que al espaol se traduce como Aleatorio.Entre tiene como


objetivo el generar valores aleatorios usando un rango definido por el
usuario, en esto se diferencia de la funcin Aleatorio que usa limites
dados por default (entre 0 y 1). Cabe resaltar que solo genera valores
enteros.

Sintaxis
Para generar un valor aleatorio entre -2 y 2 (por ejemplo) se usa la
siguiente sintaxis:

=Aleatorio.Entre(-2,2)

En general usaremos: =Aleatorio.Entre(inferior,superior) en donde inferior y


superior siempre sern parametros definidos por el usuario.

Entorno VBA

Para generar una macro conteniendo esta funcion podemos usar el


siguiente codigo que genera el valor aleatorio en la celda seleccionada, en
particular encontre bastante util esta funcion por ejemplo para asignar una
tarea a una persona de entre un grupo.

Sub getrandnumber()
inferior = InputBox(Inserte limite inferior)
superior = InputBox(Inserte limite superior)
ActiveCell.Value = WorksheetFunction.RandBetween(inferior, superior)
MsgBox (El elegido es el numero: & ActiveCell.Value)
End Sub
Uso de WorksheetFunction.RandBetween
04/02/2013 byFernandoSantos | 7 Comments

Descripcin

Esta funcin que al espaol se traduce como Aleatorio.Entre tiene como objetivo el
generar valores aleatorios usando un rango definido por el usuario, en esto se
diferencia de la funcin Aleatorio que usa limites dados por default (entre 0 y 1).
Cabe resaltar que solo genera valores enteros.

Sintaxis

Para generar un valor aleatorio entre -2 y 2 (por ejemplo) se usa la siguiente sintaxis:

=Aleatorio.Entre(-2,2)

En general usaremos: =Aleatorio.Entre(inferior,superior) en donde inferior y superior


siempre sern parametros definidos por el usuario.

Entorno VBA

Para generar una macro conteniendo esta funcion podemos usar el siguiente codigo
que genera el valor aleatorio en la celda seleccionada, en particular encontre bastante
util esta funcion por ejemplo para asignar una tarea a una persona de entre un grupo.
Sub getrandnumber()
inferior = InputBox(Inserte limite inferior)
superior = InputBox(Inserte limite superior)
ActiveCell.Value = WorksheetFunction.RandBetween(inferior, superior)
MsgBox (El elegido es el numero: & ActiveCell.Value)
End Sub

Uso de WorksheetFunction.Vlookup
10/11/2012 byFernandoSantos | 9 Comments

La funcin Look up es lo que se conoce en el Excel como buscarv, es


decir permite encontrar un valor determinado en una base de datos.

Sin duda es de mucha ayuda puesto que permite buscar un valor


determinado que est en la primera columna y aplicando el .vlookup
permite devolver un valor de la misma fila del dato buscado pero que se
encuentra en otra columna.

Por ejemplo:
Por ejemplo, en esta base muestra diferentes cdigos de corredores de
seguros, su nombre y el producto que venden.

Para el presente ejemplo,queremos saber el nombre del corredor. Para esto


la bsqueda ser de la siguiente manera.

Sintaxis:

expression.VLookup(Arg1, Arg2, Arg3, Arg4)

A continuacin, se presenta la formulacin en VBA de esta frmula:


(Para mayor visualizacin de la imagen, hacer click en la misma)

Asimismo, esta imagen muestra la frmula tras utilizar el grabador de


macros.
Cmo crear una macro paso a paso?
03/09/2016 byCamilaGhezziHintze | 0 comments

En este tutorial, aprenderemos a crear paso a paso una macro simple.

Paso 1: Activar la barra de herramientas Programador

La barra de herramientas necesaria para trabajar con macros est oculta en


el Excel por defecto. Por lo tanto, para empezar a crear nuestra macro es
necesario activar esta barra de herramientas.

La ruta a seguir para activarla es: Archivo Opciones Personalizar cinta de


opciones y activar la casilla Programador.

Habilitar ficha programador

Paso 2: Habilitar las macros

Otra opcin por defecto en Excel es que las macros se deshabilitan


automticamente. Para trabajar con macros es necesario cambiar esta
opcin. Para ello, debemos seguir la siguiente ruta: En la pestaa
Programador, seleccionar la herramienta Seguridad de macros. En la nueva
ventana que aparecer, seleccionar la opcin Habilitar todas las macros y
dar click en Aceptar.

Habilitar Macros

Paso 3: Crear la macro con el grabador

Una forma muy simple de crear una macro es utilizando el grabador de


macros. Esta herramienta permite que cualquier accin que nosotros
realicemos en el libro de Excel sea codificada en el VBA. Utilizar el grabador
es una muy buena manera de empezar a familiarizarnos con las macros,
pero nos limita a nicamente las acciones que se pueden realizar
directamente con las herramientas visibles del Excel. Por lo que ms
adelante, ser necesario ingresar los cdigos manualmente.

Para empezar a grabar nuestra macro, debemos seguir los siguientes


pasos: en la pestaa Programador, seleccione la herramienta Grabar
macro. Le aparecer una ventana donde deber colocar el nombre,
mtodo abreviado, descripcin y ubicacin de la macro.
En primer lugar, pngale un nombre a la macro que pueda recordarle la
utilidad de este (pues a la hora de trabajar con varias macros, necesitar
recordar para que sirve cada una). En mtodo abreviado se le da la opcin
de crear un atajo para ejecutar la macro (esta caracterstica es opcional).
Luego, le da la opcin de elegir dnde guardar la macro. Puede elegir entre
Libro nuevo, Este libro o Libro de macros personal. Esta ltima opcin
permite guardar la macro en una carpeta personal a la cual podemos
acceder desde cualquier libro de Excel con el que trabajemos, pero
nicamente desde la computadora en la que la hayamos creado. Con las
otras dos opciones la macro se guardar en un libro especfico y la
podremos utilizar en cualquier computadora pero solamente para ese
archivo. Finalmente, tambin nos da la opcin de agregar alguna
descripcin sobre la macro que vamos a crear (esto tambin es opcional,
pero es til como un recordatorio de la funcin de la macro). Una vez que
damos Aceptar, se ha empezado a grabar nuestra macro. Podrn ver que
donde dieron click a Grabar macro ahora aparece la opcin Detener
macro.

Paso 4: Grabar la macro

Ya prendido el grabador de macros, puede proceder a realizar toda la


secuencia de acciones que desee que realice la macro. Por ejemplo:
cambiar el formato de un texto, eliminar una columna o una fila, borrar
contenido de una celda, etc. Una vez que ya hayamos realizado todas las
acciones que queremos que ejecute la macro, debemos seleccionar la
opcin Detener grabacin (ubicada en la pestaa Programador).
Esta nueva macro la puede observar en el editor de Visual Basic. En la
misma pestaa Programador, al abrir la herramienta de Visual Basic le
aparecer la ventana para editar. Para ver la macro creada con el grabador,
deber seleccionar el proyecto Mdulo1, entre las opciones de la barra de
proyectos ubicada a la izquierda. Conforme vaya creando ms macros con
el Grabador, se irn agregando esos cdigos a este proyecto llamado
Mdulo1. Tambin puede editar cualquier macro ya creada o incluso crear
una nueva manualmente.

Paso 5: Ejecutar la macro

La forma ms directa de poder poner en accin la macro que hemos creado


es con el mtodo abreviado o atajo que nos permita establecer al crear una
macro con el grabador. Si es que utilizamos esta opcin, para ejecutarla
slo es necesario aplicar la combinacin de teclas y la macro realizar
automticamente toda la secuencia de acciones que le indicamos.

En caso de que no haya definido un mtodo abreviado, podr ejecutar la


macro de la siguiente manera. Dentro de la pestaa Programador, al lado
de la herramienta Visual Basic podr ver la opcin de Macros. Al
seleccionarla le aparecer una nueva ventana con la lista de todas las
macros disponibles. Elija la macro que desee realizar y seleccione la opcin
ejecutar.

Y listo! Ya ha creado y puesto en accin su primera macro.

Funcin ISERROR
18/02/2015 byFernandoSantos | 6 Comments
Funcin ISERROR
Es una funcin de VBA que nos indica si la variable contiene un valor de
error (#N/A, #VALOR! , #REF! , #DIV/0!, #NUM!, #NOMBRE?,
#NULO! ) la funcin devuelve True, de lo contrario la funcin devuelve
False.
Tiposdeerrores:
#N/AEn tu frmula o funcin hay algn valor que no est.
#VALOR!Estas utilizando un operando o un argumento no valido,
por ejemplo texto en vez de nmeros.
#REF!Tu frmula se est refiriendo a una celda que no es vlida, por
ejemplo porque se elimino.
#DIV/0!Aparece cuando en una frmula estas dividiendo entre cero
o entre una celda vaca.
#NUM!Te indica que los valores numricos no son validos, es o bien
un nmero demasiado grande o demasiado pequeo y Excel no lo puede
representar.
#NOMBRE?El texto de la frmula que has introducido no es
reconocido por Excel.
#NULO!En tu frmula haces referencia a dos rangos que no tienen
interseccin entre ellos.

La sintaxis de la funcin es la siguiente:


IsError (Var)
El valor que retorna es de tipo:
Bool (True o false)

A continuacin se muestra una programacin de un ejemplo en la que se


utiliza la funcin ISERROR.

Sub validacion()
For i = 2 To 21
Cells(i, 5).Select
If IsError(ActiveCell) Then
Selection.Font.ColorIndex = 3
Else
If ActiveCell = CERTIFICADO Then
Selection.Font.ColorIndex = 10
Else
If ActiveCell = CONSTANCIA Then
Selection.Font.ColorIndex = 25
End If
End If
End If
Next
End Sub

Funcin FILEDATETIME
17/02/2015 byEMERSON | 11 Comments

Es una funcin de VBA que permite obtener la fecha y hora en el que un


archivo fue creado o modificado por ultima vez.

El parmetro de entrada es una cadena que refiere a un nombre de un


archivo, este puede incluir una carpeta y una unidad de disco. Adems, el
parmetro de entrada es de tipo String y devuelve un valor de tipo Date.
Cabe aclarar que la fecha y hora depende de la configuracin del sistema
de cada computadora.
A continuacin se muestra una programacin de un ejemplo en el que se
muestra la utilizacin de la funcin Filedatetime.

Sub obtenerfecha()
Dim archivo As String
archivo = Range(A1)
fecha = filedatetime(archivo)
Range(A2) = fecha
End Sub

A continuacin se muestra una explicacin de como funciona la macros


descrita anteriormente.

Primero hay que declarar la variable o en este caso el parmetro de entrada


para utilizar la funcin Filedatetime que es de tipo String, luego se coloca
en que celda se va a encontrar el parmetro de entrada archivo, en este
caso se va a almacenar en la celda A1. Despus, definimos la variable fecha
que va a almacenar el resultado de esta funcin que va a ser la fecha y
hora en que se modific por ltima vez el archivo almacenado en la
celda A1. Finalmente, se que coloca la celda en el que se va a almacenar la
variable fecha, en este caso se va a almacenar en la celda A2.

A continuacin se va a mostrar algunos casos en el que se puede emplear


la funcin Filedatetime.

-En una empresa en que se tiene un sistema de informacin, esta funcin


puede ser muy til para conocer si el sistema esta siendo o ha sido
modificado por algn trabajador porque se va a saber la fecha y hora en
que se modific por ultima vez.

-En una empresa donde se quiere proteger la informacin de sta, esta


funcin se puede utilizar para saber la fecha y hora en se modific la
informacin y a partir de esto nadie mas puede modificar dicha informacin
y as esta se encuentre segura hasta que se requiera utilizar dicha
informacin.

A continuacin se adjunta un ejemplo aplicativo de la funcin Filedatetime.


Aplicar Trim a un rango de celdas con Macros
19/12/2014 byMayraJean | 4 Comments

Suele suceder que al trabajar con una lista de datos, hay celdas que tienen
espacios al inicio y/o final de los valores o texto que contienen. Esto causa
dificultades, por ejemplo si se quiere buscar un valor utilizando VLOOKUPu
otras similares. A continuacin se presenta una Macro que facilitar el
trabajo de encontrar estos espacios extra y eliminarlos en las celdas
correspondientes.

Se utilizar como ejemplo una lista de canciones, como se ve los datos que
han sido ingresados tienen algunos espacios al inicio, final o ambos. Con la
siguiente macro se lograra eliminar esos espacios.

Paso 1. Declarar el rango de celdas y cada celda como Range.

Paso 2. Al ejecutar una Macro los cambios que realiza esta ya no se


pueden deshacer, entonces es bueno tener la opcin de elegir si se guarda
antes de ejecutar la Macro. Se crea entonces un cuadro de mensaje que
pregunte si se quiere guardar el Libro antes, esta contar con tres opciones:
Yes, No, Cancel. Yes: para grabar el libro. Cancel: no se ejecuta la macro.
No: ejecuta la macro sin guardar.

Paso 3. Se asigna a la variable Rango el rango objetivo. En este caso como


la lista podra variar se usa el algoritmo de la ltima fila, se coloca el rango
desde la celda A2 hasta la celda A## (##: ultima fila usada).

Paso 4. Se empieza el anlisis por celda que pertenece al rango


anteriormente definido. El for each activa cada una de las celdas para que
se ejecute el paso 5.

Paso 5. Una vez la celda est activa la macro se asegura de que la celda a
analizar no est vaca con la condicin de que si no est vaca se ejecute la
funcin Trimen esa celda.

Paso 6. Para pasar a analizar la siguiente celda en el rango definido.

A continuacin se muestra la Macro:


Esto es lo que se obtiene finalmente: