Documentos de Académico
Documentos de Profesional
Documentos de Cultura
400macros PDF
400macros PDF
Tabla de Contenidos
0
Cap. I 1 - Introduccin 15
1 BIENVENID@S
................................................................................................................................... 15
2 BREVE INTRODUCCIN
...................................................................................................................................
AL EDITOR 17
3 Cmo crear una
...................................................................................................................................
macro 18
4 Dnde colocar
...................................................................................................................................
las macros 18
5 Cmo ejecutar
...................................................................................................................................
una macro 18
6 Acerca de las...................................................................................................................................
macros Auto-Open 18
7 Acerca de las...................................................................................................................................
macros Auto-Close 19
8 Cmo proteger
...................................................................................................................................
un proyecto 19
9 Evitar que las
...................................................................................................................................
macros se vean desde el men 19
10 Otras consideraciones:
...................................................................................................................................
Cmo...? 19
1 Creando un nuevo
...................................................................................................................................
directorio 31
2 ESTABLECER
...................................................................................................................................
LA RUTA DE ACCESO PREDETERMINADA 31
3 Establecer si...................................................................................................................................
un directorio existe 31
4 Establecer si...................................................................................................................................
un archivo existe en un directorio 31
5 Eliminar un archivo
...................................................................................................................................
de un directorio 32
6 Establecer nueva
...................................................................................................................................
unidad de disco 32
7 Establecer nuevo
...................................................................................................................................
directorio o carpeta 32
8 Crear lista de...................................................................................................................................
archivos de una carpeta 32
9 Copiar todos...................................................................................................................................
los libros de una carpeta en otra 32
10 Obtener propiedad
...................................................................................................................................
fecha y hora de archivos 32
11 Obtener tamao
...................................................................................................................................
de archivos 32
II
III Manual 400 Macros Plus
Guardar un libro
..........................................................................................................................................................
con clave 38
Guardar un libro
..........................................................................................................................................................
cuyo nombre ser el valor de una variable 39
Guardar un libro
..........................................................................................................................................................
cuyo nombre sern datos concatenados 39
Guardar libro..........................................................................................................................................................
sin mdulos 39
Guardar libro..........................................................................................................................................................
sin cdigo o macros 39
19 Cerrando Libros
................................................................................................................................... 39
Cerrar todos los
..........................................................................................................................................................
libros en uso 39
Cerrar un solo..........................................................................................................................................................
libro 39
Cerrar un libro
..........................................................................................................................................................
SIN guardar los cambios 39
Cerrar un libro
..........................................................................................................................................................
guardando los cambios 40
Impedir el uso..........................................................................................................................................................
del botn Cerrar del libro 40
Controlar errores
..........................................................................................................................................................
antes de cerrar un libro 40
30 Restablecer rea
...................................................................................................................................
visible en hoja 48
31 Crear hojas segn
...................................................................................................................................
valores en una lista 48
32 Aplicar Zoom...................................................................................................................................
a un rango u hoja 48
33 Obtener el valor
...................................................................................................................................
del Zoom aplicado a la hoja 48
34 Ejecutar rutina
...................................................................................................................................
en todas las hojas del libro 48
35 Hojas de Dilogo:
...................................................................................................................................
cmo ocultarlas 48
36 Eliminar todos
...................................................................................................................................
los comentarios de la hoja 48
37 Activar hoja ...................................................................................................................................
cada tanto tiempo 49
IV
V Manual 400 Macros Plus
31 Mostrar Columnas
................................................................................................................................... 57
32 Insertar comentarios
................................................................................................................................... 57
33 Formatos a Celdas
................................................................................................................................... 57
34 Formato a Columnas
................................................................................................................................... 57
35 Autoajustar columnas
................................................................................................................................... 57
36 Cambiar minsculas
...................................................................................................................................
por maysculas 57
37 Cambiar maysculas
...................................................................................................................................
por minsculas 57
38 Capturar fecha
...................................................................................................................................
y hora de carga de datos 58
39 Insertar Nombre
...................................................................................................................................
de rango 58
40 Insertar Hipervnculos
................................................................................................................................... 58
41 Transponer una
...................................................................................................................................
fila 58
42 Ordenar un rango
................................................................................................................................... 58
43 Detectar si la...................................................................................................................................
celda contiene formula 58
44 Ejemplo de frmula
...................................................................................................................................
con rango variable 58
45 Cmo conocer
...................................................................................................................................
el color de una celda 59
46 Colorear celdas
...................................................................................................................................
con mas de 3 condiciones 59
47 Resaltar la fila
...................................................................................................................................
activa (1) 59
48 Resaltar la fila
...................................................................................................................................
activa (2) 59
49 Resaltar la celda
...................................................................................................................................
activa 59
50 Cambiar color
...................................................................................................................................
de fuente a celdas con datos 59
51 Separar cada...................................................................................................................................
caracter de una cadena en distintas col 59
52 Quitar espacios
...................................................................................................................................
en celdas 60
53 Proteger rangos
...................................................................................................................................
o celdas 60
54 Recorrer celdas
...................................................................................................................................
protegidas 60
2 INTRODUCIR...................................................................................................................................
FRMULAS EN CELDAS 66
3 Armar frmula
...................................................................................................................................
con datos variables 67
4 Modificar frmula
...................................................................................................................................
de celda 67
5 Colocar resultado
...................................................................................................................................
de frmula en celdas 67
VI
VII Manual 400 Macros Plus
10 Asignar mismo
...................................................................................................................................
atajo de teclado a varias macros 76
11 NO MOSTRAR
...................................................................................................................................
AVISOS DE ALERTA 76
12 No mostrar aviso,
...................................................................................................................................
al guardar un archivo, de que el archivo ya existe: 77
13 No mostrar la...................................................................................................................................
ejecucin de la macro o el movimiento de hojas: 77
14 Inhabilitar eventos
................................................................................................................................... 77
15 Crear atajos ...................................................................................................................................
de teclado desde una macro 77
3 Establecer un
...................................................................................................................................
valor predeterminado en un InputBox 88
4 Controlar que
...................................................................................................................................
lo ingresado a un InputBox sea referencia vlida 88
5 Ingresar y seleccionar
...................................................................................................................................
un rango con InputBox 88
6 Seleccionar datos
...................................................................................................................................
en un rango 88
7 Controlar que
...................................................................................................................................
el dato ingresado sea fecha 88
VIII
IX Manual 400 Macros Plus
4 Crear un grfico
...................................................................................................................................
en hoja nueva y guardar el libro 109
5 Crear grfico
...................................................................................................................................
con datos de hoja variable 109
6 Imprimir grfico
...................................................................................................................................
y tabla que lo alimenta 109
7 MODIFICANDO
...................................................................................................................................
DIMENSIONES DE TODOS LOS GRAFICOS 110
8 Copiar todos
...................................................................................................................................
los graficos en otra hoja 110
9 Eliminar todos
...................................................................................................................................
los graficos de una hoja 110
10 Colorear series
...................................................................................................................................
por macro 110
11 Ubicando un
...................................................................................................................................
grfico por macro 110
12 Recorrer todos
...................................................................................................................................
los grficos del libro 111
13 Reconocer ...................................................................................................................................
el rea del grfico seleccionado 111
X
XI Manual 400 Macros Plus
2 Evitar la actualizacin
...................................................................................................................................
automtica de TD 118
3 OBTENER EL
...................................................................................................................................
TOTAL DE UNA TABLA DINMICA 118
4 Convetir un...................................................................................................................................
campo en un campo de filas 119
5 Eliminar todas
...................................................................................................................................
las Tablas Dinamicas de una hoja 119
6 Uso de variables
...................................................................................................................................
en TD 119
XII
XIII Manual 400 Macros Plus
22 Funcion Nombre
...................................................................................................................................
Mes 139
I
15 Manual 400 Macros Plus
1 1 - Introduccin
1.1 BIENVENID@S
VERSIN DEMO
Manual: 400 MACROS Plus
+ 20 Funciones
La intencin de este Manual es guiar al usuario de Excel a potenciar las planillas de clculo con
programacin.
NOTA: En esta versin DEMO se podr acceder a un tema por captulo. El mismo se
encuentra en maysculas en el ndice.
No solo los usuarios 'programadores' sacarn provecho de este libro. Los que nunca han
trabajado con algn lenguaje de programacin vern que muy fcilmente podrn 'personalizar'
sus libros adaptando o creando rutinas con cdigo VBA (Visual Basic para Aplicaciones)
En el primer captulo un par de temas con imgenes para familiarizarnos con el entorno Editor
de Macros.
A continuacin un par de captulos detallando conceptos que sern utilizados a lo largo del
manual: Eventos, Mtodos, Variables, Cadenas y otros.
As hasta llegar al ltimo captulo con 'Rutinas Interesantes' que pueden serte de utilidad o de
modelo para otras tareas, como: Colorear celdas por condicin, Crear Libros por cada hoja y
muchas ms.
Cada lnea, cada comando se encuentra explicado en espaol para que puedan ser adaptados a
las necesidades y configuracin de cada libro.
Contiene adems imgenes que guiarn y mostrarn los resultados obtenidos una vez ejecutada
la macro.
Cada vez que accedas a este tema, encontrars en el margen superior un clip recordndote
que el tema tiene agregados. Haciendo clic en l, aparecern tus notas personales.
Las rutinas contenidas en este manual, fueron desarrolladas y probadas en las siguientes versiones:
Windows98/Windows XP con Office 2000, Office XP (2002) , Office 2003 y Excel 2007
En caso de dificultad para adaptar alguna rutina a tu libro, envame tus comentarios a:
cibersoft_arg@yahoo.com.ar
Qu es una macro:
Una macro es un conjunto de instrucciones en lenguaje de programacin, que en el caso de
Excel se conoce como VBA (Visual Basic for Applications), que nos permite realizar ciertas tareas,
que por ser repetitivas nos valemos de una rutina para automatizarlas.
Estas instrucciones se guardan en el Editor de Macros.
Por ejemplo: al ingresar datos en una columna que nos complete el resto del registro con los
datos de otra hoja, que cada vez que ingresamos valores con cierto criterio, nos coloque un color
de fuente o fondo, etc.
El Editor de Macros:
Desde el men Herramientas, Macros, Editor de Macros tenemos acceso a una ventana donde se
colocarn ya sea simples instrucciones, pequeas rutinas y cdigos completos de aplicaciones
como Facturacin, Control de Gestin, etc.
En versin Excel 2007 se accede desde la ficha Programador, Visual Basic (primer opcin)
II
21 Manual 400 Macros Plus
Hemos visto en el captulo Introduccin, Cmo ejecutar una macro, que stas pueden
ejecutarse ante un evento del libro u hoja.
Pero qu es un evento? es una accin que el usuario ejecuta, y tiene que ver con los objetos
Libro y Hojas, siendo los ms comunes: abrir, guardar, imprimir o cerrar libros, activar o
desactivar hojas. Estas rutinas no pueden ser ejecutadas manualmente, como las que colocamos
en mdulos, sino que se ejecutan al producirse el evento.
Debemos seleccionar un objeto y luego optar por un evento. A continuacin la primera y ltima
instruccin de la macro se escribirn.
Ejemplos:
Las rutinas colocadas en los eventos del libro (Private Sub Workbook) que hacen mencin a
hojas (Sheet....) se ejecutan para todas las hojas del libro.
Atencin: tambin los controles colocados en un Userform tienen su lista de eventos, como
SetFocus (al recibir el enfoque), LostFocus (al perder el enfoque) y muchos ms que
encontrarn en los ejemplos del captulo Userforms
2.3 Metodos
2.4 Propiedades
III
25 Manual 400 Macros Plus
3 3 - Tratamiento de Variables
3.1 Tipo de Variables
Variables Locales:
Las variables Locales son las que se declaran dentro de un procedimiento y sus valores slo
pueden ser utilizados en ste. Para declararlas se utiliza la sentencia Dim, generalmente al inicio
del procedimiento, aunque tambin pueden ser declaradas en otros puntos del mismo.
Ejemplo:
Sub Macro1()
Dim valor1 as Integer, valor2 as Integer
Dim cadena1 as String
'otras instrucciones
End Sub
Variables Pblicas:
Son las que estarn disponibles para todos los procesos, sus valores pueden ser utilizados en
cualquier mdulo.
Se declaran como Public. Recomiendo utilizar un mdulo especialmente destinado a la
declaracin de estas variables lo que facilitar su ubicacin.
Si se declararn en un mdulo utilizado para otro procedimiento debern ser las primeras
instrucciones
Ejemplo:
Option Explicit
Public minro as Byte
Sub Macro2()
'instrucciones
End Sub
Constantes:
A diferencia de las variables que modifican sus valores durante la ejecucin de un proceso, las
Constantes mantienen su valor. Tambin pueden ser Locales o Pblicas
Ejemplo:
Const dia as Integer
Public Const cadena1 as String
IV
4 - Trabajando con Cadenas 28
Para extraer partes de una cadena, ya sea el contenido de una celda, una variable o el
resultado de un InputBox, contamos con las siguientes funciones:
Tambin podemos utilizar la funcin InStr conjuntamente con Mid para obtener una cadena a
partir de cierto caracter.
En el ejemplo se trata de obtener el apellido sabiendo que se ubica despus del caracter 'espacio'
Sub variables()
Dim esp As integer
Dim apellido As String
Dim cadena As String
cadena = "Juan Perez"
'se obtiene la ubicacin del espacio
esp = InStr("Juan Perez", " ")
'se obtiene la cadena a partir de la posicin del espacio
apellido = Mid(cadena, esp)
'se muestra el resultado
MsgBox apellido
End Sub
V
31 Manual 400 Macros Plus
En el tema anterior hemos visto que la funcin MkDir crea una carpeta en el directorio
predeterminado de archivos Excel, si no especificamos otra ruta.
Para conocer desde una macro esa ruta (la que se establece desde el men Herramientas,
Opciones, General del libro Excel) utilizaremos la funcin CurDir.
Sub ConoceDir()
Dim miRuta
'obtenemos la ruta de acceso predeterminado
miRuta = CurDir()
'mostramos el resultado en un mensaje
MsgBox miRuta
'otras instrucciones
End Sub
VI
6 - Trabajando con Libros 34
6.7 Impedir que se abran otros libros mientras est nuestro libro
abierto
Se puede forzar a que todo el libro sea cargado en maysculas con la expresin Ucase (o
minsculas con Lcase), que al ser colocada en el objeto ThisWorkbook ser de aplicacin para
todas las hojas
End If
End Sub
Atencin: si una celda tiene una frmula que devuelve texto, al ser convertida en mausculas
pierde su condicin de frmula quedando solo el texto como valor.
Para evitar esto podemos realizar la consulta con esta instruccin en lugar de la lnea en verde
en la rutina anterior :
Para ser utilizada en una sola hoja, no en todas, en lugar de colocar la rutina en el objeto
ThisWorkbook, colocarla en la hoja deseada, seleccionndola entre los objetos que se
encuentran en la ventana del margen izquierdo, por ejemplo: Hoja1 (Hoja1)
La rutina entonces ser:
End If
End Sub
Nota: de la misma manera se puede forzar al uso de minsculas reemplazando Ucase con
Lcase
Atencin: ver otra rutina para convertir maysculas o minsculas en el captulo 12:
Controlando Teclas....., Ejecutar macro al presionar Enter
VII
7 - Trabajando con Hojas 42
Las instrucciones para el manejo de Hojas, pueden ser includas en cualquier punto de nuestras
rutinas, ya sea que las tengamos en mdulos o en ciertos eventos como por ejemplo en el evento
Open del libro.
Mtodos
Calculate Calcula todos los libros abiertos, una hoja de clculo especfica de un libro o un
rango determinado de celdas de una hoja, como se muestra en la tabla siguiente:
ChartObjects Devuelve un objeto que representa un nico grfico incrustado (un objeto
ChartObject) o una coleccin de todos los grficos incrustados (un objeto
ChartObjects) de la hoja.
PivotTables Devuelve un objeto que representa un solo informe de tabla dinmica (un objeto
PivotTable) o una coleccin de todos los informes de tabla dinmica (un objeto
PivotTables) de una hoja de clculo. Slo lectura.
PivotTableWizard Crea un nuevo informe de tabla dinmica. Este mtodo no muestra el Asistente
para tablas dinmicas. No est disponible para orgenes de datos OLE DB. Use el
mtodo Add para agregar una cach de tabla dinmica y crear a continuacin un
informe de tabla dinmica basado en la cach.
XmlDataQuery Devuelve un objeto Range que representa las celdas asignadas a una
determinada expresin XPath. Devuelve NothingNothing si la expresin XPath
especificada no se ha asignado a la hoja o si el rango asignado est vaco.
XmlMapQuery Devuelve un objeto Range que representa las celdas asignadas a una
determinada expresin XPath. Devuelve NothingNothing si la expresin XPath
especificada no se ha asignado a la hoja.
VIII
51 Manual 400 Macros Plus
Hemos visto en el captulo 2 que una propiedad es la caracterstica de un objeto (rango, celda,
objetos, otros)
Propiedades ms comunes
Para ver ejemplos de cada uno de estas propiedades ingresarla como tema en la Ayuda de Excel
Tambin puede utilizar el buscador de este manual
Hiperlinks Devuelve una coleccin Hiperlinks que representa los vnculos del rango
Interior Permite trabajar con el interior de una celda (color o trama)
Left Establece el margen izquierdo de una celda o rango
Locked Indica si un objeto o rango se encuentra bloqueado
MergeArea Indica si la celda se encuentra en un rango combinado
MergeCells Indica si un rango contiene celdas combinadas
Name Devuelve el nombre de un objeto
Next Devuelve un objeto Range que representa la celda siguiente
NumberFormat Establece el formato de una celda o rango
Offset Permite desplazarse en forma relativa con respecto a una celda o un rango
PageBreak Permite establecer dnde se har el salto de pgina
Previous Devuelve la celda anterior
Resize Permite redefinir el tamao de un rango
Row Posicin de fila en la que empieza el Rango
Rows Filas que componen un rango
Style Indica el estilo del rango
Text Texto contenido en las celdas de un rango
Top Establece el valor tope de una celda
Validation Devuelve un objeto que representa la validacin de datos para un rango
Value Valor contenido en las celdas de un rango
VerticalAlignment Permite establecer la orientacin vertical
Width Indica el ancho de un objeto
En las hojas siguientes encontrarn ejemplos del uso de cada uno de estos temas.
Si por ejemplo tenemos una lista que va desde B2 hasta H20, la instruccin siguiente selecciona
el rango completo
Range("B2").CurrentRegion.Select
Una regin comprende celdas aledaas hasta encontrar celdas vacas, tanto hacia la derecha
como hacia abajo.
IX
9 - Bucles: Instrucciones o Comandos Especiales 62
La expresin 'For Each Next' permite recorrer todas las ocurrencias que componen un
objeto.
Sintaxis:
Por ejemplo: Recorrer todas las hojas de un libro (hoja/Worksheets), recorrer las celdas de un
rango (celda/Range) o los libros abiertos (libro/Workbooks)
Sub RecorreCeldas()
Dim celda As Range
Dim rango As Range
End If
End Sub
Nota: con la pestaa 'Buscar' de este manual, podrn encontrar otros ejemplos del uso de este
comando.
X
10- Trabajando con frmulas 66
Sub formula1()
Range("K10").Formula = "=+SUM(A1:J10)-SUM(K11:K12)"
End Sub
Sub formula2
ActiveCell.Formula = "=+INDEX(C:C,MATCH(F2,E:E,0))"
End Sub
XI
69 Manual 400 Macros Plus
Por Objeto Insertado hago referencia a los objetos de la Barra de Herramientas Cuadro de
Controles o Formulario, como as tambin a los que se insertan con la Barra de Dibujo
(Autoformas, Imagen, etc).
Estos objetos se denominan Shapes o Pictures para las imgenes
Los ejemplos que encontrarn a continuacin pueden adaptarse a cualquier objeto dentro de la
misma categora, siguiendo las propiedades propias de cada uno.
Las siguientes rutinas, son generales para cualquier control (ComboBox, Listbox, etc). Solo se
deber reemplazar la expresin 'ComboBox' por 'ListBox' o el que corresponda.
Nota: para conocer el nombre del objeto dibujado con esta barra, selecciona el mismo con clic
derecho. A la derecha de la barra de frmulas, aparecer en el Cuadro de nombres, el nombre
del control.
Tambin haciendo clic derecho sobre el control, opcin 'Asignar Macro' se ver en la ventana
emergente el nombre del control. Luego cancelar esta ventana.
El tema no se e
11.2.14 Buscar valor del Combo en base Devolver otros datos en textbox
11.4 Imgenes
11.4.1 Cargar una imagen cuyo nombre se encuentra en una celda
XII
75 Manual 400 Macros Plus
Si se desean evitar los mensajes de alerta que Excel pueda enviar al ejecutar una macro, utilizar
la propiedad DisplayAlerts con valor False
Application.DisplayAlerts= False
Esta lnea, colocada delante de las instrucciones que posiblemente puedan devolver un mensaje
de alerta, har que no se muestre el aviso y si necesita una respuesta por parte del usuario Excel
tomar su valor predeterminado.
Ejemplo:
Sub eliminaHoja()
'evita que se exhiba el mensaje de alerta
Application.DisplayAlerts = False
'elimina la hoja
Sheets(3).Delete
End Sub
XIII
79 Manual 400 Macros Plus
Un buen programa debe controlar los posibles errores imprevistos que pueden aparecer al
ejecutarse el mismo, y que permitan seguir o cancelar el proceso normalmente.
Por ejemplo, antes de la instruccin Print (imprimir) se debe agregar una instruccin que
controle el error que puede producirse si el sistema no encuentra una impresora instalada.
Las principales instrucciones para control de errores que veremos en este captulo, deben ser
colocadas en las rutinas de Impresin, Apertura y guardado de libros, al insertar objetos como
imgenes, que son las que con mayor frecuencia originan errores en las macros.
Ejemplo:
Sub miMacro()
On Error Resume Next
Intruccin 1
Instruccin 2
End Sub
El incluir la sentencia On Error Resume Next antes de la instruccin 1 implica que si se produce
algn error el programa lo ignorar y continuar con la instruccin siguiente.
13.4 Err
XIV
81 Manual 400 Macros Plus
El mtodo para manipular las pestaas de las hojas es: DisplayWorkbookTabs, que con valores
en True o False las mostrar o las ocultar.
Ejemplo:
Sub muestrahojas ()
'ocultar las pestaas
ActiveWindow.DisplayWorkbookTabs = False
End Sub
XV
85 Manual 400 Macros Plus
XVI
87 Manual 400 Macros Plus
Los InputBox muestran un mensaje en un cuadro de dilogo, esperan que el usuario escriba un
texto o haga clic en un botn y devuelve un tipo String con el contenido del cuadro de texto.
Sintaxis:
Title Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo.
Si omite title, en la barra de ttulo se coloca el nombre de la aplicacin.
Default Opcional. Expresin de cadena que se muestra en el cuadro de texto como respuesta
predeterminada cuando no se suministra una cadena. Si omite default, se muestra el cuadro de
texto vaco.
xpos Opcional. Expresin numrica que especifica, en twips, la distancia en sentido horizontal
entre el borde izquierdo del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite
xpos, el cuadro de dilogo se centra horizontalmente.
ypos Opcional. Expresin numrica que especifica, en twips, la distancia en sentido vertical entre
el borde superior del cuadro de dilogo y el borde superior de la pantalla.
Helpfile Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utilizar para
proporcionar ayuda interactiva para el cuadro de dilogo. Si se especifica helpfile, tambin
deber especificarse context.
Context Opcional. Expresin numrica que es el nmero de contexto de Ayuda asignado por el
autor al tema de Ayuda correspondiente. Si se especifica context, tambin deber especificarse
helpfile.
Sub SolicitoClave()
Dim miClave as String
miClave = InputBox("Ingrese Clave", "*** Solicitud ***")
'si la clave es correcta
If miClave = "Macros" then
'se desproteje la Hoja2
Sheets("Hoja2").Unprotect
End If
End Sub
Sheets("Hoja2").Unprotect miclave
XVII
17- Buscando Datos 90
Esta rutina elimina datos duplicados. Se recorre una columna, que puede estar en otra hoja o
en la misma. Si los datos se encuentran en la otra lista se borra la fila del dato encontrado.
Este ejemplo es til cuando se tienen 2 tablas con los mismos datos y se desea conservar solo los
datos nicos.
Sub EliminaDuplicados()
Dim rango As String
Dim dato As String
Dim midato As Object
Dim fila As Byte
'rango donde se efectuar la bsqueda
rango = "F2:F15"
'se recorre la columna D hasta la primer celda vaca
Range("A2").Select
While ActiveCell.Value <> ""
'el contenido de la celda ser el dato a buscar
dato = ActiveCell.Value
'se busca en el rango indicado
Set midato = ActiveSheet.Range(rango).Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
'si la bsqueda es exitosa.....
If Not midato Is Nothing Then
'se guarda el nmero de fila en la variable
fila = ActiveCell.Row
'se borra el contenido del rango A:C de esa fila
Range("A" & fila & ":C" & fila).Delete
Else
'si el dato no fue encontrado se pasa a la celda siguiente
ActiveCell.Offset(1, 0).Select
End If
'se repite el proceso
Wend
Set midato = Nothing
End Sub
XVIII
18- Evaluando y Comparando Datos 94
Si efectuamos clculos con una macro, podemos necesitar evaluar si el resultado de una celda
presenta error, como por ejemplo un valor no encontrado con la funcin Buscar o como
resultado de una divisin por 0.
Ejemplo:
If IsError(ActiveCell.Value) Then
'instrucciones para cuando el resultado es error
else
'instruciones si no da error
End If
18.6 Eliminar fila si varios datos del registro cumplen una condicin
XIX
19- Copiando Datos 98
Para realizar una copia con Pegado Especial, con la opcin que presenta el men Edicin: solo
valores, este es el cdigo:
Sub PegarValor()
'previamente se habr seleccionado el rango a copiar
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
'inhabilita el modo Copiar/Pegar
Application.CutCopyMode = False
End Sub
Lo que logramos con estas instrucciones es dejar una celda que contiene frmulas, solo con su
valor, copiando y pegando sobre s misma.
19.8 Copiar cierta fila en otro libro. Conocer ltima fila con datos
19.10 Duplicar una hoja- La copia tendr los valores, no las frmulas
XX
20- Uso de Temporizador 102
Para realizar tareas automticamente en cierto tiempo, se utiliza el mtodo OnTime, cuya
sintaxis es la siguiente:
Ejemplos:
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
Procedure:="mi_rutina", Schedule:=False
XXI
105 Manual 400 Macros Plus
Esta rutina aplica un Filtro Avanzado y copia las celdas resultantes en otro destino.
Para utilizarla solo deber modificar las ubicaciones de los datos. En el ejemplo se utiliz las filas
1 y 2 para los criterios, y la base se encuentra desde A4 hasta C10. El destino del rango a
copiar es la misma hoja desde A14. (* para copiar en otra hoja Ver Notas)
Sub FiltroAvanzado()
'seleccionar una celda de la base a filtrar
Range("A4").Select
'establecer el rango de la base, las filas donde se encuentran los criterios y las celdas de
destino
Range("A4:C10").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"A1:B2"), CopyToRange:= Range("A14:C14"), Unique:=False
End Sub
Notas: si el destino ser otra hoja modificar la instruccin anterior donde dice:
CopyToRange:= Range("A14:C14")
por la siguiente:
CopyToRange:= Sheets("Hoja3").Range("A14:C14")
XXII
109 Manual 400 Macros Plus
Este ejemplo modifica las dimensiones de todos los grficos que se encuentren en una hoja.
Sub DimensionandoGraficos()
Dim grafico As ChartObject
'recorre todos los grficos de la hoja activa
For Each grafico In ActiveSheet.ChartObjects
'modifica alto y ancho (*ver Notas)
grafico.Height = 200
grafico.Width = 250
Next
End Sub
Notas: otras aplicaciones para esta rutina: eliminar todos los grficos, copiarlos en otra hoja,
ajustar colores, etc
XXIII
113 Manual 400 Macros Plus
El ejemplo muestra adems los valores para ser ubicado el formulario en el extremo izquierdo o
derecho
Esta rutina se colocar haciendo doble click sobre el formulario para pasar a la seccin cdigo.
XXIV
24- Trabajando con Tablas Dinmicas 118
Sub totalTD()
'se selecciona el campo a devolver
ActiveSheet.PivotTables("Tabla dinmica3").PivotSelect "Total 'Suma de TOTAL3'",
xlDataOnly, True
Nota: Observar que se est trabajando con una tabla denominada Tabla dinmica3 y cuenta
con un campo denominado Suma de TOTAL3
XXV
121 Manual 400 Macros Plus
25 25- Impresin
25.1 Imprimir hojas
En el objeto ThisWorkbook (Este Libro) colocar la siguiente rutina que impide que se ejecute
tanto Vista Previa como la impresin de todo o parte del documento.
XXVI
26- Trabajando con el entorno Excel 124
La siguiente rutina nos devolver un listado con el nombre de todas las rutinas que contiene
el libro activo.
Esto tambin se puede lograr con otros libros. En ese caso reemplazar el trmino
'ActiveWorkBook' por el nombre del libro que deseamos revisar.
La informacin puede ser devuelta en MsgBox o si estimamos que la lista ser extensa, podemos
colocar los valores en celdas como se program este ejemplo.
Sub ListadoSubrutinas()
Dim linea, inicio As Integer
Dim linea1 As String
Dim objeto As Object
'se analiza cada objeto del proyecto activo
For Each objeto In ActiveWorkbook.VBProject.VBComponents
'se analiza si el objeto = 1 (modulo). Otros objetos son: 2=class, 3= Userform, 100 = Hojas
If objeto.Type = 1 Then
'se recorren las lneas del primer mdulo hasta el total de lneas
For linea = 1 To objeto.CodeModule.CountOfLines
linea1 = objeto.CodeModule.Lines(linea, 1)
'se remueven los espacios iniciales
linea1 = Trim$(linea1)
'analizamos si se trata de una Sub-rutina
If Left$(linea1, 3) = "Sub" Then
'se calcula el largo hasta ()
inicio = InStr(linea1, "()")
If inicio > 0 Then
'se guarda el nombre en la celda
ActiveCell.Value = Mid$(linea1, 4, inicio - 4)
ActiveCell.Offset(1, 0).Select
End If
End If
Next linea
End If
Next objeto
End Sub
IMPORTANTE: En versin Excel 2007, para poder tener acceso al objeto VBProyect, se requiere
configurar la opcin desde el Centro de Confianza.
Pasos a seguir:
1- Desde la hoja, botn de Office, Opciones de Excel, Centro de confianza.
2- Presionar botn: Configuracin del Centro de confianza.
3- De la lista seleccionar Configuracin de Macros y tildar la opcin 'Confiar en el acceso
al modelo ......'
XXVII
27- Trabajando con otras aplicaciones 130
Sub ExcelWord()
'copia el rango seleccionado previamente
Selection.Copy
End Sub
NOTA: Esta rutina copia las celdas seleccionadas y las pega como TABLA en Word
XXVIII
28- Creando Complementos 134
XXIX
29- Funciones definidas por Usuario (UDF) 136
Hemos visto hasta ahora cmo escribir rutinas que se ejecutan ante ciertos eventos (como abrir y
cerrar libros, al cambiar de hojas, etc) o al ser llamadas por el usuario (al clic en un botn, por
atajo de teclado o desde men Herramientas, Macros) para que realice alguna tarea especial.
Una funcin en cambio, es cdigo creado para devolver un valor en una celda, de la misma
manera que cuando escribimos en la hoja Excel:
=Promedio(argumentos)
Las funciones personales, cuando son colocadas en un mdulo del libro, solo podr ser
utilizada en este libro.
Atencin: Recomiendo dar un nombre al mdulo para reconocer rpidamente su contenido. Para
ello, seleccionar el mdulo y modificar su propiedad Name.
Cuando son colocadas en mdulos de un libro que luego se guarda como complemento (xla o
xlam) segn lo visto en el captulo anterior, podrn ser utilizadas desde cualquier libro Excel
(ver pasos en captulo anterior)
Para utilizarlas, presionar el botn Funciones, (Ms funciones) y buscar las de la categora
'Definidas por el usuario'
En Excel 2007, buscar en la tira de opciones la ficha Frmulas, y all la primer opcin:
Insertar Funcin . Luego buscar la categora Definidas por usuario.
XXX
141 Manual 400 Macros Plus
Esta es una tarea frecuente: tener 2 Combobox donde el segundo mostrar valores segn la
opcin elegida en el primero.
En primer lugar ser necesario tener distintas listas por cada categora que mostrar el primer
Combobox.
Estas listas pueden ser colocadas en otra hoja , asignndoles a cada una un nombre de rango
(ver *)
Else
'se asigna el otro rango
ComboBox2.ListFillRange = "J1:J7"
End If
End Sub
Nota: Para asignar un nombre de rango a cada lista, seleccionarla y seguir estos pasos segn la
versin:
1- hasta Excel 2003 includo: men Insertar, Nombre, Definir. Escribir un nombre que sea
claro de identificar y Aceptar.
2- para Excel 2007: ficha Frmula, Asignar nombre a un rango o Administrador de
nombres desde el grupo Nombres Definidos.