Está en la página 1de 17

21/05/13

Excel Avanzado

Trucos Excel
Comentarios a Adolfo Aparicio

www.excelavanzado.com
Para rellenar una Base de Datos 1 podemos pasar de un dato a otro de la misma fila con <TAB> y si después de introducir el último dato de la fila pulsamos <INTRO> el cursor se posicionará en el primer dato de la siguiente fila. Para separar un sector circular en un gráfico 2 se pulsa con el ratón sobre él y luego se separa. También se puede cambiar el color de un sector pulsando sobre él con el botón derecho del ratón y eligiendo 'Formato de punto de datos...'. Para incluir una nueva serie de datos en un gráfico se copia el rango de datos nuevo y se pega sobre el gráfico. Para seleccionar una tabla completa 4 basta con posicionarse en cualquier celda de la tabla y pulsar [CTRL]+*. (Si usa el asterisco del teclado general no olvide que se consigue pulsando también la tecla [MAYUSCULAS]). Para poder ver las fórmulas de una hoja 5 puede hacer lo siguiente: Herramientas, Opciones, pestaña Ver, y en Opciones de Ventana marcar Fórmulas. Pero también existe un método de Teclado Abreviado que consiste en pulsar [ALT]+º y si se vuelven a pulsar estas dos teclas se muestra la hoja como habitualmente la vemos. Auto_Open() y Auto_Close() Existe una macro de autoarranque que se ejecuta cuando se abre el libro. Se llama auto_open(). Y existe otra que se ejecuta justo antes de cerrar el libro que se llama auto_close(). Sub Auto_Open() Dim hora As Double Dim saludo As String hora = (Now - Int(Now)) * 24 Select Case hora Case 6 To 14 saludo = "Buenos días" Case 14 To 21 saludo = "Buenas tardes" Case Else saludo = "Buenas noches" End Select MsgBox saludo & " Amo" End Sub Equivalente a auto_open existe otra macro Workbook_Open, pero ésta ha de ser guardada no en un módulo normal, sino en ThisWorkbook. Pruebe lo siguiente: El siguiente procedimiento permite abrir automáticamente el libro Balance.xls al abrir el libro Informe.xls. El procedimiento ha de estar en ThisWorkbook del libro Informe.xls. Sub Workbook_Open() www.ceepvirtual.com/materias/12/HEXCEL/trucos.htm
1/17

Base de Datos

Gráficos

3

Gráficos

Teclado

Teclado

6

Macros

volver a Excel y grabar la plantilla. salvarlo con este nombre y dejarlo en la carpeta "InicioXL" (XLStart).com/materias/12/HEXCEL/trucos. pestaña Proteger. quitar la casilla de verificación que esta puesta por defecto en 'Bloqueada'. Se le pueden permitir más o menos acciones al usuario. Nombrar Hoja desde una celda Esta macro permite asignar el nombre que pongamos en la celda A1 como nombre de la Hoja actual.ceepvirtual.Value End Sub Protección de una hoja Las celdas por defecto vienen bloqueadas. Cerrar el editor. pero no esta visible ya que tiene el atributo de Escondido (Hidden).xls como se ha indicado anteriormente con la macro de autoarranque siguiente: 8 Sub Auto_open() MsgBox ("Que tengas un buen día") End Sub Esta macro creada en el libro Personal. Sub NombreHoja() ActiveSheet. En la Ventana de propiedades buscar la propiedad EnableSelection y ponerle el valor 1.XLS]Hoja1 Saludo al arrancar Crear un libro Personal. Celda. Si únicamente le dejamos seleccionar las desbloqueadas nos encontraremos con algo parecido a un formulario.Open Filename:="C:/Contabilidad/Balance. lo debemos salvar y luego activar el comando "Ocultar" del menú "Ventana". Después se debe proteger la hoja con: Herramientas.xls"). Esto se hace con el libro PERSONAL. para que no se vea cuando iniciamos la aplicación.XLS Personal.xls es un Libro que se carga cada vez que se inicia Excel. En el Explorador de proyectos ir a la hoja que queramos proteger.htm . Si deseamos desbloquear algunas de ellas debemos hacer lo siguiente: Formato.21/05/13 Excel Avanzado Sub Workbook_Open() 'Apertura de libro Balance Workbooks.xls hace que al iniciar Excel nos salga un mensaje saludándonos. Esto se hace cuando no se desea que alguien vea la fórmula de una celda.xls Podemos crear una macro para que este disponible en todas las hojas de cálculo. Con la doble opción (protección de hoja y la propiedad EnableSelection) será imposible seleccionar Macros 7 Personalización 9 Macros 10 Personalización 11 Personalización 2/17 www. Proteger.xls" 'Activación del libro Informe Windows("Informe. Si no le permitimos seleccionar las celdas bloqueadas y desbloqueadas no podrá posicionarse con el cursor sobre ellas. La ruta de mi fichero es: C:\Documents and Settings\Adolfo\Datos de programa\Microsoft\Excel\XLSTART\ [PERSONAL. Propiedad EnableSelection Para reforzar el bloqueo del paso anterior podemos hacer lo siguiente: Ir al Editor de Visual Basic. por lo que si necesitamos modificarlo lo debemos hacer a través del comando "Mostrar" del menú "Ventana".Activate End Sub Personal. Proteger hoja. Cada vez que dejamos de trabajar con este archivo.Name = Range("A1"). que se encuentra en la carpeta "Office" del directorio donde esta instalado MSOffice. Si marcamos 'Oculta' no se verá el contenido de la celda en la barra de fórmulas. En caso que no exista lo podemos crear con un libro de trabajo nuevo.

y por lo tanto copiar o modificar cualquier valor. Excel Avanzado 12 Personalización 13 Base de Datos Criterios utilizados para filtrar una base de datos Un criterio está formado al menos por dos celdas. 17 Personalización www.ceepvirtual. Cerrar el editor. Puede ordenar en vertical (que es lo normal) o en horizontal. porque la propiedad EnableSelection no conserva el valor modificado al cerrar la plantilla. En ese caso el criterio esta formado por múltiples celdas.EnableSelection = xlUnlockedCells End Sub El valor por defecto es xlNoRestrictions Opciones de Ordenación Al ordenar un rango de datos podemos elegir en Opciones que la ordenación sea Normal (alfabética) o según una de las Listas Personalizadas de Excel. presione ALT y mantenga presionado hasta que deje el rango en la parte de la hoja de destino que desee. Con la doble opción (protección de hoja y la propiedad EnableSelection) será imposible seleccionar una celda.000 y 40. Este procedimiento no funciona en Excel 2000 y en las versiones anteriores. La primera es un nombre de campo y la segunda que estará debajo es el criterio propiamente dicho. supongamos que deseamos filtrar de una base de datos los registros correspondientes a trabajadores que cumplan que su salario esta comprendido entre 30. Este procedimiento no funciona en Excel 2000 y en las versiones anteriores. volver a Excel y grabar la plantilla. Salario >=30. verás que se insertan filas o columnas.000 euros. y si están en fila distinta se han de cumplir unos u otros (operador O). porque la propiedad EnableSelection no conserva el valor modificado al cerrar la plantilla. Aunque lo cierto es que pocos usuarios conocen la citada propiedad. Ese procedimiento se puede realizar también mediante una macro: Private Sub Workbook_Open() Worksheets("Hoja1"). Varias líneas en una celda Para escribir varias líneas en la misma celda puedes escribir lo que quieras y para abrir un espacio hacia abajo en la misma celda pulsar Alt+Enter.21/05/13 Con la doble opción (protección de hoja y la propiedad EnableSelection) será imposible seleccionar una celda. Base de Datos 15 Personalización Mover celdas entre hojas 16 Seleccione el rango a mover.htm 3/17 . Personalización Insertar filas o columnas rápidamente En una hoja de Excel que ya tengas rellena. Puede distinguir mayúsculas de minúsculas. EnableSelection = xlUnlockedCells Para paliar el inconveniente citado anteriormente para las versiones de Excel 2000 y anteriores se puede hacer lo siguiente: Ir al Editor de Visual Basic. porque la cruz blanca que es normalmente el ratón se cambia a color negro Ahora pulsa la tecla de mayúsculas (no la de bloq.000 14 Cuando usamos varios criterios estos se relacionan entre si mediante concatenadores lógicos Y u O. Sabes que estás encima del control de relleno. En el Explorador de proyectos ir a la hoja que queramos proteger. En la Ventana de propiedades buscar la propiedad EnableSelection y ponerle el valor 1. prueba a hacer esto: Vete al principio de lo que tengas escrito Pon el ratón sobre el control de relleno (es el puntito negro que tiene el cursor abajo a la derecha). Llévelo hasta la pestaña de la hoja de destino. Por ejemplo. mayús) y sin soltarla pulsa el botón izquierdo del ratón y arrástralo hacia abajo o hacia la derecha. y por lo tanto copiar o modificar cualquier valor. o bien su edad es de 30 años y se llaman Maria. de forma que los criterios que estan en la misma fila se han de cumplir ambos (operador Y).com/materias/12/HEXCEL/trucos.

Opciones. haga doble clic en el extremo superior de la celda seleccionada. Última celda de un rango. www.ceepvirtual. pero se puede cambiar Puede cambiarlo en Herramientas. el máximo.Flecha abajo Ctrl + Flecha abajo Ctrl + Fin Alt + AvPg Shift + Barra de desplazamiento vertical u horizontal Ctrl + AvPg Ir a A1 Última celda de un rango. Edición. Algunas teclas de navegación Ctrl + Intro Fin . Celda inferior derecha al área activa Página a la derecha Permite desplazamientos más rápidos Avanza entre las hojas de un libro Personalización Personalización 20 Teclado Para ir al extremo superior de un bloque de datos. Si no se emplea el Ctrl la celda no se copia. Y si lo hace mientras presiona la tecla Shift podrá seleccionar rangos.htm . Con los demás bloques puede ir a los demás extremos del bloque. Esto nos dará una serie con incrementos unitarios. Rellenar. Mover selección después de ENTRAR. el mínimo o contar los elementos seleccionados en el rango.com/materias/12/HEXCEL/trucos. se mueve. Modificar. Teclado Gráficos 4/17 F11 Pulsando F11 sobre una serie de datos se construye un gráfico completo y de forma automática. Series 19 Poner el primer número y arrastrar el controlador de relleno con la tecla Ctrl pulsada. Pulsando sobre ella con el botón derecho del ratón podemos cambiar la suma por un promedio. 21 Personalización Algunas abreviaturas de teclado 22 Ctrl + C Ctrl + V Ctrl + X Ctrl + Z Copiar Pegar Cortar Deshacer Teclado 23 24 Al pulsar Intro se desplaza el cursor hacia abajo. Cálculo automático en la barra de estado Al seleccionar un rango de números vemos su suma en la barra de estado (abajo).21/05/13 Excel Avanzado Copiar en Excel XP arrastrando con Ctrl 18 Se puede copiar una celda arrastrando con Ctrl desde alguno de los 4 lados del borde de la celda activa.

Celda. señale la primera haciendo clic con el ratón sobre la pestaña que indica el nombre de la primera y haga Mayúsculas + clic en la última. etc. la nueva hoja se llamará 'Hoja 1 (2)' Es segundo método consiste en situar el ratón en el cuadradito que queda como intersección del indicador de filas y columnas. 30 Personalización Escribir en varias celdas simultáneamente 31 Señale las celdas donde quiere escribir una misma expresión. solo la indicación de que la celta tiene un comentario. Con TAB se puede saltar de una a otra celda de las desbloqueadas. Borrar se puede elegir entre Todo. dar formato. Personalización Texto con diversos formatos en una misma celda Se pueden dar distintos formatos a los caracteres o palabras de una misma celda. Si las hojas no son consecutivas selecciones la primera con un clic y las restantes con un Ctrl + clic en cada una. pulsar Ctrl y sin soltar arrastrar la pestaña con el ratón. Esto selecciona la hoja completamente. Puede verlos completamente.. Proteger hoja. Personalización Ver todas las fórmulas de una hoja 32 Se consigue pulsando Alt + º (esto es. También se puede conseguir mediante: Herramientas. Proteger.com/materias/12/HEXCEL/trucos. en varias hojas simultáneamente ha de señalarlas primero.21/05/13 Excel Avanzado Proteger celdas 25 Con Formato. Escriba dicha expresión. por ejemplo con Ctrl + V. 29 Volumen (m3) Personalización Esto se consigue señalando en la barra de fórmulas el carácter o caracteres que se quieren cambiar y aplicándoles el formato deseado.ceepvirtual. Ver. Al soltar se habrá duplicado completamente la hoja. Para volver a la situación anterior volver a pulsar. Opciones. la tecla Alt y simultáneamente la tecla de 1º que está a la izquierda del número 1). Y valide su introducción con Ctrl + Intro. o no verlos en absoluto según elija una opción u otra en Herramientas. Borrar Con el comando Edición. quitar la casilla de verificación en Bloqueada se consigue que en estas celdas se pueda escribir después de ejecutar Herramientas. Si son un conjunto de hojas correlativas. Celda. Comentarios. Para ello. Opciones. Proteger. formulas. Proteger hoja. 27 Personalización Insertar Comentarios 28 Se pueden insertar comentarios en las celdas. Se inserta una hoja nueva y pulsando sobre ella en el citado cuadradito se pega el contenido del portapapeles.htm Personalización 5/17 Personalización . Por ejemplo: puede poner en una celda la siguiente expresión: Volumen (m3) Véase el distinto color de la fuente y el 3 como superíndice. Y con Mayúsculas + TAB se salta hacia atrás. Ocultar la formula en una celda 26 Con Formato. Protege. Contenido (Supr) o 33 Comentarios. pulse con el botón derecho del ratón y elija 'Insertar Comentario'. Personalización Personalización Copiar una hoja Para copiar una hoja completa dispone de dos sistemas: El primero y más fácil es señalar con el ratón la pestaña de la hoja a copiar. Seguidamente se copia al portapapeles. con Herramientas. Después se ha de proteger la hoja. Ver. por ejemplo con Ctrl + C. Para borrar un rango primero seleccione el rango y luego presione Shift mientras arrastra con el www. Si la hoja a copiar se llamaba 'Hoja 1'. Oculta se marcan las celdas cuyas fórmulas o contenido visto en la línea de edición se desee ocultar. Cuando haya terminado de introducir la información y formatos comunes haga clic en cualquier pestaña y así se desactivará el modo de trabajo conjunto. Formatos. Incluso si son de rangos separados. Trabajar simultáneamente en varias hojas Antes de escribir texto. Fórmulas. Proteger.

por ejemplo. barras de herramientas personalizadas e incluso macros. Escriba como nombre de fichero Libro.21/05/13 33 Excel Avanzado Para borrar un rango primero seleccione el rango y luego presione Shift mientras arrastra con el ratón el indicador de relleno hacia el extremo superior izquierdo del rango. También puede definir una carpeta de inicio de Excel en Herramientas. Opciones. Puede trabajar con Estilos En Formato.xlt o Hoja.xlt) y la plantilla de hoja predeterminada (hoja.xlt y guárdelo en la carpeta de inicio de Excel (C:\Documents and Settings\nombreusuario\Datos de programa\Microsoft\Excel\INICIAR). Si no presiona Shift conseguirá borrar el contenido pero no los formatos. Abra un libro nuevo y combine los Estilos en éste. "Al inicio. Si se desea que los estilos estén disponibles de forma permanente sigua los siguientes pasos: Abra el libro cuyos Estilos quiere guardar permanentemente. La fuente por defecto en Excel es la Arial 10 pero se puede cambiar Se puede cambiar para todos los libros nuevos mediante: Herramientas. General y elegir la Fuente Estándar y el tamaño. Estilo y dentro del formato de estilo Normal elegir Modificar. elija como tipo Plantilla (*. Si se usa con "nombrearchivo" =CELDA("nombrearchivo") proporciona el nombre y ruta del archivo (siempre que esté grabado). En la ayuda hay un error y en 38 Función 6/17 www. un balance. También pueden existir otras plantillas para diferentes usos. Estilo puede modificar el estilo normal o crear nuevos estilos.xlt) u hojas nuevas insertadas (si la plantilla se llama hoja. Puede convertir el estilo de una celda en un tipo de estilo personalizado. Fuente y proceder a cambiar la fuente.com/materias/12/HEXCEL/trucos. Pero también se puede cambiar la fuente sólo en el libro activo de la siguiente forma.htm . Guardar como. General. cierto informe mensual. etc. abrir todos los libros en:" La función =CELDA La función CELDA es la típica función que sirve para varias cosas según que argumentos se utilicen. Finalmente Aceptar. Para ello abra los dos ficheros (o más) y ejecute los pasos señalados desde el fichero hacia el que quiere llevar los nuevos estilos. De esta forma cada vez que abra un libro u hoja nuevos se dispondrá de estos Estilos. Nuevo y salga el Panel de Tareas y en el elija Plantillas Generales. Libros que se abren al iniciar Excel Los libros que coloque en la carpeta de inicio de Excel: C:\Documents and Settings\nombreusuario\Datos de programa\Microsoft\Excel\INICIAR 36 Personalización 37 o bien en C:\Documents and Settings\nombreusuario\Datos de programa\Microsoft\Excel\XLSTART Personalización Se abrirán al iniciar Excel. Sitúese en la celda patrón y elija Formato. Puede transferir los estilos de un libro a otro mediante Formato. textos.xlt). fórmulas. La plantilla de libro predeterminada (libro.ceepvirtual. para predefinir una factura. Opciones. Ejecute Formato. Estilo. Combinar.xlt). pero sólo estarán disponibles en el Libro Activo.xlt Las plantillas permiten predefinir formatos.xlt) se han de grabar como plantilla en el directorio INICIAR que para la versión XP suele estar en: C:\Documents and Settings\nombreusuario\Datos de programa\Microsoft\Excel\INICIAR Personalización 34 Personalización 35 Personalización o bien en: C:\Documents and Settings\nombreusuario\Datos de programa\Microsoft\Excel\XLSTART Tanto las plantillas que tenga en la carpeta de inicio predeterminada de Excel como las que haya definido en la carpeta de plantillas (C:\Documents and Settings\nombreusuario\Datos de programa\Microsoft\Plantillas ) las tendrá disponibles cuando haga Archivo. Ejecute Archivo. Plantillas *. Estilo y cambie el nombre por uno nuevo de su elección. Activar el libro en el que se quiere cambiar la fuente por defecto. estilos. que se utilizarán en todos los nuevos libros abiertos (si la plantilla se llama libro.

teclee el nombre para el archivo donde se guardará el módulo. En la ayuda hay un error y en lugar de poner "nombrearchivo" pone "archivo". Otro argumento interesante es "contenido". nunca debe precederlo por la cláusula private. Macros La cláusula Private 41 Puede anteponer la cláusula private a todos los procedimientos y funciones que sean llamados sólo desde el mismo módulo. Seleccione en la lista Buscar en: la carpeta donde tiene ubicado el archivo a importar. o el signo ?. cambie su valor sobre la propia ventana de inspección y continúe la ejecución del programa. Se introduce en un programa antecediendo a una variable que se desea comprobar en la ventana Inmediato.Print Esta expresión permite efectuar la depuración del programa de forma más cómoda. Ejemplo: 45 Sub Dos_a_la_diez() Dim i As Integer Dim t As Integer t=1 For i = 1 To 10 t=t*2 Debug. Excel Avanzado 39 1. Se ven en la Ventana Inmediato [Ctr+G]. es una forma de ahorrar memoria y hacer que el programa corra un poco más rápido. 4. seleccione el archivo a importar (General. Propiedad ListFillRange del ComboBox Con esta propiedad deberemos www. para terminar un bucle.Bas". 3. Aparece un cuadro de diálogo. recuerde que esta cláusula restringe el ámbito de utilización de un procedimiento a su propio módulo. Macros Importar un módulo 40 1. . De esta forma conseguiremos ver todos los valores que toma la variable cada vez que el programa pasa por este comando. Para ello agregue a la ventana de inspección la variable que desee cambiar. Debug. Una vez localizada la carpeta.Print "Dos a la " & i & " = " & t Next MsgBox t End Sub Después de efectuada la depuración se quita la línea que contiene el comando Debug. Aparece un cuadro de diálogo. 2. etc.com/materias/12/HEXCEL/trucos. si sitúa el puntero de ratón sobre una variable. =CELDA("contenido". Active el editor Visual Basic.21/05/13 proporciona el nombre y ruta del archivo (siempre que esté grabado). 4. 3. por ejemplo "General. para ver que ocurre si coge determinados valores.htm definir los elementos que debe mostrar la lista. debe especificarse el 7/17 Macros Macros . Pase al editor de visual basic y active el módulo a exportar.Bas en el ejemplo) y pulse sobre Abrir. Macros Ventana Inmediato 44 Puedes inspeccionar variables desde esta ventana anteponiendo la palabra print antes de la variable.A3) Exportar un módulo Proporciona el contenido de la celda A3. Macros Inspección rápida de variables 42 Cuando ejecuta un programa paso a paso.Print. Seleccione Archivo/ Exportar archivo.BAS es la extensión de estos archivos. 2. se muestra el valor de la misma. En cuadro de edición Nombre de Archivo. Macros Modificar el valor de una variable en tiempo de ejecución 43 A veces resulta interesante cambiar el valor de alguna variable cuando se está ejecutando el programa. Seleccione Archivo/ Importar Archivo. Si necesita llamar un procedimiento o función desde otro módulo.ceepvirtual. observe que . Pulse sobre el botón Guardar.

Por lo que veo.com/materias/12/HEXCEL/trucos. si está seleccionado el segundo valdrá 1.DIAS -1799028673 =DURACION -1525481390 =VNA.21/05/13 Excel Avanzado 46 Con esta propiedad deberemos definir los elementos que debe mostrar la lista. www. Complementos . a veces será necesario aplicar funciones de conversión de datos antes que el dato se copie en la hoja. Las funciones que he visto que tienen valor propio son las siguientes: Macros 47 Macros 48 Macros 49 Función 50 =PRECIO -1965686714 =AMORTIZ. si alguna vez construye una lista con números verá que el dato seleccionado se alinea a la derecha. etc. no se puede establecer en modo diseño. ya que en la práctica esta función tiene los argumentos cambiados de orden. Pruebe =TEXTO(. A mi me da -1965686714. Es decir. ListIndex valdrá 0. son las que aparece al ampliar las funciones al instalar las complementarias.htm 8/17 . por lo que en estos casos. Ponga en una celda cualquiera +PRECIO y al pulsar intro verá que aparece un valor. Por ejemplo.formato) valor: es el número que queremos convertir a texto formato: es el formato que queremos darle. Su función contraria es =VALOR. Al escribir un número en una celda queda alineado a la derecha.LIN 1477378140 =CUPON.LAB 270991416 Función y muchas más. Propiedad LinKedCell del ComboBox En esta propiedad debe especificar en que celda debe copiarse el elemento seleccionado de la lista. con Herramientas .). Ejemplo: '54 La función TEXTO tiene dos argumentos que según la ayuda son: =TEXTO(valor. La función =TEXTO Esta función permite convertir un valor numérico en un texto. si está seleccionado el primero. Herramientas para Análisis . Es un argumento optativo Pero la ayuda no se corresponde con la realidad de la función.PER -269746088 =DIAS. debe especificarse el rango que contiene los elementos a mostrar. Tenga en cuenta que esta propiedad sólo está disponible en tiempo de ejecución. observe que no aparece en la ventana propiedades del cuadro combinado. o tres. Propiedad ListIndex del ComboBox Mediante esta propiedad podremos saber que elemento de la lista es el seleccionado por su número de orden. no se muestra con el formato correspondiente. O al menos eso es lo que he podido comprobar en la versión XP.ceepvirtual. es decir la podremos leer mientras esté funcionando el programa.NO. el rango debe ser una columna (o dos . si son fechas. si se escribe como texto (anteponiéndole una comilla simple) quedará alineado a la izquierda."43") Pero si prueba =TEXTO("43") obtendrá un error Curiosidades de alguna funciones con valor propio Algunos nombres de función tienen valor propio si se escriben un una celda y sin argumentos. etc. Cuidado con esta propiedad. tenga en cuenta que los elementos de la lista son tratados como datos de tipo String aunque contenga números o fechas. Si no hay ningún elemento seleccionado valdrá -1.

Módulo 2.UserName End Function Puede probarla. Cerrar la ventana de Opciones pulsando en Aceptar.EnableSound = False . Primero utilizando la Grabadora de Macros.Formularios .UserName = "Adolfo Aparicio" . La macro obtenida será la siguiente: Sub Macro1() ' ' Macro1 Macro ' Macro grabada el 06/08/2004 por Adolfo ' ' 52 With Application . Exit Function 54 Se usan eventualmente para salir de un procedimiento o función.21/05/13 Excel Avanzado Cambiar el nombre de un Móludo 51 Al insertar módulos en el Editor de Visual Basic.RollZoom = False End With End Sub Ahora vamos a crear la función =Usuario siguiendo el procedimiento inverso. Haga lo siguiente. Opciones. vbQuestion + vbYesNo.StandardFont = "Arial" . Funcition Usuario() Usuario = Application.frm. Active la Grabadora y luego seleccione Herramientas. Nombre de usuario: UserName Vamos a crear una función que proporcione el nombre de usuario. Extensiones de los nombres de macro 53 .StandardFontSize = "10" . se utilizan los nombres: Módulo 1. "Ultima pregunta") = vbYes Then Application. Podemos cambiar el nombre el un módulo en sus propiedades (F4). Y detener la Grabadora. Macro que pregunta si se desea salir de la aplicación Sub SalirAplic() If MsgBox("¿Quiere salir de la aplicación".Módulos estandar.bas . Extensión .ceepvirtual. . La encontrará en la categoría de Funciones Definidas por el usuario.cls . La única propiedad de un Módulo es 'name'. . Exit Sub. Extensión .Módulos de clase .com/materias/12/HEXCEL/trucos. pestaña General. Extensión . Realice un cambio en el nombre de usuario.Quit End If End Sub Llamada a un procedimiento [Call] NombreProc [(lista de argumentos)] www.htm 9/17 Macros Macros Macros Macros 55 Macros . etc.DefaultFilePath = "C:\Documents and Settings\Adolfo\Mis documentos" .

y el Libro se encuentra en diferente carpeta que el actual: 'c:\Carpeta\SubCarpeta\[Nombre de Libro.xla.NombreDelProcedimiento" Ejemplo: Application. b As Byte) MsgBox "La suma es " & a + b End Sub Sub sumar() Call Suma(3.xla).xls y luego como *. es decir no podrás modificar o añadir mas Funciones. Excel carga los complementos guardados en el directorio donde tengáis instalado MsOffice y luego en una carpeta que varía con la versión que tengas instalada. Los argumentos deben ir entre paréntesis y pueden ser valores o variables. salvo que existan argumentos. bastara ir al Menú Archivo/Guardar como y elegir el formato Complemento de Microsoft Excel (*. Para ello.xls!ThisWorkbook. y el Libro se encuentra en la misma carpeta que el actual: '[Nombre de Libro.Run "NombreDelLibro!NombreDelMódulo. Un aspecto a tener en cuenta es que los Complementos no son editables.SalirAplic.htm . Por eso es recomendable guardar primero el Libro en formato *.xls debe estar abierto. Para XP puede ser: 58 C:\Documents and Settings\Adolfo\Datos de programa\Microsoft\AddIns\ Para convertir el libro que contiene nuestra Función en un Complemento. hemos de convertir el Libro que contiene la función en un Complemento.com/materias/12/HEXCEL/trucos. Sub Suma(a As Byte. Proteger con contraseña las macros 57 Alt + F11 Herramientas => Propiedades de VBAProject => Protección => Bloquear proyecto para visualización => Contraseña 56 Macros Macros Convertir una función en un Complemento Podemos hacer que una función creada por el usuario este disponible en todos los Libros. Los Complementos disponibles se ven haciendo: Herramientas => Complementos.xls]Nombre de Hoja'!Rango 59 Si está en una Hoja de otro Libro. en cuyo caso es obligatoria.NombreDelProcedimiento Ejemplo: ThisWorkbook.xls]Nombre de Hoja'!Rango conectado al nuestro por una Intranet: Edición 10/17 Macros Si el rango está en otro ordenador www. 4) End Sub Para llamar a un procedimiento de otro módulo NombreDelMódulo.ceepvirtual. Si lo guardáis en el directorio que tiene tu versión asignado estará siempre disponible.21/05/13 Excel Avanzado La palabra clave Call es opcional para llamar a un procedimiento.xls" Al ejecutar este comando. el libro Informe.Run "Informe.SalirAplic Para llamar a un procedimiento de otro libro Application. Hacer referencia a un RANGO Sintaxis para hacer referencia a un Rango: Si el rango está en la misma Hoja: Rango Si está en otra Hoja del mismo Libro: 'Nombre de Hoja'!Rango Si está en una Hoja de otro Libro.

0).htm . Similar a la fórmula =PAGO pero en este caso usando tipo nominal y con fraccionamiento.xls]Hoja'!Rango Los apóstrofes (') son necesarios si existen espacios.es/finan/[busquedas.'http://www.Select Wend End Sub Abrir un libro existente: Sub AbrirLibro() Workbooks.urjc. tipo_nominal!. fraccionamiento As Byte) Dim im! 'Tipo efectivo del subperiodo im = tipo_nominal / fraccionamiento / 100 Termino = Principal * im / (1 . Años As Byte.servidor.com/Carpeta/[Libro.Offset(1.EntireRow.Offset(1. y tienes acceso a Internet verás como respuesta la letra B.xls") End Sub Activar un libro ya abierto: Sub ACtivarLibro() Workbooks("Ejemplo.Value <> "Cadiz" Then ActiveCell. Ejemplo: Prueba a poner esto en una celda de una hoja de Excel cualquiera: =BUSCARV(200.Value <> "" ActiveCell.2) Si todo va bien.fcjs.ceepvirtual.Open ("C:\Mis documentos\Ejemplo.com/materias/12/HEXCEL/trucos.21/05/13 Excel Avanzado Si el rango está en otro ordenador conectado al nuestro por una Intranet: '\\Servidor\Carpeta\[Nombre de Libro. 0).Delete End If Wend End Sub Creación de una Fórmula personalizada Cálculo del término amortizativo de un préstamo tipo francés (de pagos constantes).Value <> "" If ActiveCell. Para localizar la última celda de una lista 60 Sub Final() While ActiveCell.xls]Nombre de Hoja'!Rango Si el rango está en otro ordenador conectado al nuestro por Intrernet: 'http://www.Activate End Sub Crear un libro nuevo: Sub NuevoLibro() Workbooks.Add End Sub Borrar un registro de una tabla que contenga un dato concreto Sub BorrarFilas() While ActiveCell. Function Termino(Principal@.xls").(1 + im) ^ (-Años * fraccionamiento)) End Function Macros 61 Macros 62 Macros 63 Macros 11/17 www.Range("A1").xls]Hoja1'!tab1.Select Else Selection.

1)&EXTRAE(B6.Value = 0 Then Celda. Sub ejemplo() End Sub Macro que cierra Excel Se puede asociar a un botón o a un icono.Protect Password:="1234" End Sub La función =EXTRAE y la función =ENCONTRAR Si en B6 pones el nombre de una persona.DisplayVerticalScrollBar = False End With End Sub Macro que protege el libro y la hoja Sub Blindaje() ActiveWorkbook. con fraccionamiento mensual.21/05/13 End Function Pongamos un ejemplo para un principal de 100.1)&+EXTRAE(B6. al ser el fraccionamiento mensual el término obtenido es la mensualidad.ENCONTRAR(" ".ceepvirtual.com/materias/12/HEXCEL/trucos. Excel Avanzado 64 Sub Auto_Close() Application.B6. tipo nominal anual del 6%.DisplayHorizontalScrollBar = False . En este caso.Quit End Sub Macro que elimina las barras de desplazamiento Sub Desbarra() With ActiveWindow .### Macro que reemplaza una palabra por otra Sub RemplazarPalabra() Dim Palabra As String Macros 65 Macros 66 Macros 67 Función 68 Función 69 Macros www. por ejemplo: "Andrés Suarez Oliveira" la siguiente función obtiene las tres iniciales (ASO).1) Macro que borra los ceros de un rango Sub BorrarCeros() For Each Celda In Range("C11:G24") If Celda. Para calcular la parte Fraccionaria deberíamos usar uno de estos dos métodos: =A1-ENTERO(A1) =RESIDUO(A1. 10 años.1) La función =RESIDUO permite calcular la parte Fraccionario En Excel disponemos de =ENTERO que calcula la parte entera.ENCONTRAR(" ".ClearContents Next End Sub Si sólo se quieren ocultar los ceros se ha de poner formato de celda personalizado de #.Protect Password:="1234" Sheets("Hoja1").htm 12/17 .+ENCONTRAR(" ". =IZQUIERDA(B6.B6)+1.B6)+1)+1.000 €. pero no disponemos de FRAC que calcularia la parte fraccionaria.

lo que supone borrar la palabra buscada.A1)))-ENCONTRAR("[". Las 4 líneas anteriores son una misma fórmula.21/05/13 70 Dim Palabra As String Dim Hoja As Long Palabra = Trim(InputBox("Introduzca la palabra a buscar: ")) For Hoja = 1 To Sheets.Count Sheets(Hoja). 1) End Function Función que calcula la fila que ocupa cierto valor en una tabla Está pensado para que la matriz se ponga comenzando en la celda A1. CELDA("NOMBREARCHIVO".Row End If Next End Function Para poner el nombre del fichero en una celda =EXTRAE(CELDA("NOMBREARCHIVO".A1))+1. Calculo del NIF Esta función calcula el NIF (Número de Identificación Fiscal) utilizado en España. Macros 73 Función 74 Para poner el nombre de la hoja en una celda=EXTRAE(CELDA("nombrearchivo"). Macros 72 Function DimeFila(Rango As Range.Value = Valor_a_buscar Then DimeFila = c.com/materias/12/HEXCEL/trucos.+(ENCONTRAR("]". Replacement:="".ceepvirtual. Excel Avanzado Macros 71 Function nif(dni As Long) As String nif = Mid("TRWAGMYFPDXBNJZSQVHLCKE". _ SearchOrder:=xlByRows. Valor_a_buscar) As Integer For Each c In Rango If c.255) Requiere grabar el fichero. LookAt:=xlPart.FormulaLocal End Function Si se quita la palabra 'Local' devuelve la fórmula en inglés.Replace What:=Palabra. CELDA("NOMBREARCHIVO".ENCONTRAR("]".Activate Cells.htm 13/17 . Determinación de si un número es primo o no es primo Sub primo() Dim primo As Boolean Función 75 Macros www. sin encabezado y sin que se repitan los elementos.CELDA("nombrearchivo"))+1. _ ReplaceFormat:=False Next Hoja End Sub En este caso reemplazamos por "". CELDA("NOMBREARCHIVO". Función que muestra la fórmula de una celda Devuelve la fórmula que contiene una celda en lenguaje local Function DisplayCellFormula(InputCell As Range) As String DisplayCellFormula = InputCell. MatchCase:=False.ENCONTRAR("[". SearchFormat:=False.A1). (dni Mod 23) + 1.A1))-1) Requiere grabar el fichero.

Para ello primero tendremos que llevar hasta alguna de las barras de herramientas un "botón". Ahora selecciona la Categoría "Datos" y en la ventana derecha (Comandos) busca el botón "General Get Pivot Data" (está cerca del final. Factorial Function facto(n) Dim i As Integer facto = 1 i= 0 Do i= i+ 1 facto = facto * i Loop While i <> n End Function Excel Avanzado Macros 77 Tablas Dinámicas 78 Macros www.htm 14/17 . Selecciona: Ver. "Entrada de Datos")) d=2 primo = True Do While primo And d < n If n Mod d = 0 Then primo = False End If d=d+1 Loop If primo Then MsgBox (n & " es primo") Else MsgBox (n & " no es primo") End If End Sub Activar o Desactivar el empleo de la función IMPORTARDATOSDINAMICOS Al intentar operar con formulas que hacen referencia a celdas que provienen de una tabla dinámica con la versión XP de Excel nos encontramos con que automáticamente nos pone la función: IMPORTARDATOSDINAMICOS.ceepvirtual.21/05/13 76 Dim primo As Boolean Dim n As Long Dim d As Long n = Val(InputBox("Introduce un número natural".com/materias/12/HEXCEL/trucos. Ahora. llamado "General GetPivotData". que viene activada por defecto. y nosotros preferiríamos que esto funcionara como antes. Para llevar este botón hasta una barra de herramientas sigue estos pasos. todo lo que tendremos que hacer es pinchar este botón para activar / desactivar la función IMPORTARDATOSDINAMICOS. Ve a la pestaña "Comandos". Barra de Herramientas. Esto se debe a que desde Office XP la función IMPORTARDATOSDINAMICOS se activa por defecto cuando nos referimos a celdas que forman parte de una tabla dinámica. aproximadamente el octavo empezando por el final). Personalizar. Pero podemos desactivarla. Lleva este botón a la barra de herramientas de Excel que prefieras (esto se hace arrastrando el icono y soltándolo en alguna de las barras de herramientas).

ScreenUpdating = False y al final Application. las dimensiones y recuperandose 'la memoria usada.DisplayAlerts= False 81 y al final Application.1) End Sub Excel Avanzado 79 Macros 'En este caso se pone la variable c a su estado inicial 'Borrandose los valores.ScreenUpdating = True Evitar que al ejecutar una macro nos haga preguntas Al principio de la macro escribe Application.21/05/13 End Function Inicializar una matriz Se inicializa con ERASE 'En este caso se ponen todos los valores a Empty Sub test() Dim c(1 To 20.Value MsgBox c(1.Range("A1:J20").ceepvirtual.1) Erase c MsgBox c(1.DisplayAlerts=True Formula referida siempre a un mismo rango =SUMA(INDIRECTO("A1:B2")) Macros Macros www. para evitar las "chirivitas" que se ven al ejecutar una macro: Al principio de la macro escribe 80 Application. 1)Para evitar que durante la ejecución de una macro se vean todos los movimientos y cambios del cursor. 1) Erase c 'Esto dara error ya que no hay ninguna matriz MsgBox c(1. para evitar las "chirivitas" que se ven al ejecutar una macro: End Sub Evitar los movimientos de pantalla mientras se ejecuta una macro Para evitar que durante la ejecución de una macro se vean todos los movimientos y cambios del cursor. Sub test1() Dim c As Variant c = ActiveSheet.htm 15/17 .com/materias/12/HEXCEL/trucos. 1 To 10) As Variant For i = 1 To 20 For j = 1 To 10 c(i. j) = RND Next j Next i MsgBox c(1.

En el ejemplo siguiente. La siguiente macro posiciona el cursor en la última celda llena de la columna A de la Hoja1. y para poder trabajar con ella la macro la mustra. Sub final1() i=1 While Worksheets("Hoja1"). que es la fila de comienzo del rango.Cells(i.."")) Esta fórmula cuenta cuantos guiones (-) existen en un texto que esta en la celda F3.Wend Esta estructura permite ejecutar las instrucciones contenidas mientras la condición sea verdadera.htm 16/17 Función Macros Macros 87 Macros ..Rows.Visible = True ActiveWorkbook.21/05/13 82 =SUMA(INDIRECTO("A1:B2")) Excel Avanzado Esta expresión permite sumar siempre el rango indicado aunque dicho rango se mueva a otra zona de la hoja. pero no sabemos en que fila comienza.. Ejecutando la macro la variable n tomará el valor 5.Count Ocultar Hojas Podemos ocultar o mostrar Hojas de un libro. 1).Sheets("Hoja2")..Select End Sub La segunda macro requiere posicionar inicialmente el cursor en la primera celda llena.Offset(1..Offset(-1. . 84 Contar cuantas veces se repite un mismo caracter en un texto =+LARGO(F3)-LARGO(SUSTITUIR(F3."-".Value <> "" Worksheets("Hoja1"). Manejo de Rangos Para señalar una tabla se hace con CurrentRegion. y al finalizar la vuelve a ocultar. 0).Value <> "" ActiveCell. 0).Visible = False End Sub Determinar la fila hasta la que llega un rango Podemos determinar facilmente la fila hasta la que llega un rango.Cells(i. Supongamos el rango B5:B100.Select Wend ActiveCell. 1). 86 Sub oculta() Sheets("Hoja2").com/materias/12/HEXCEL/trucos. la Hoja2 esta inicialmente oculta.CurrentRegion filas = R. del que sabemos en que fila acaba (la 100). Un ejemplo: 85 Dim R As Range Dim filas As Long Set R = Range("A1"). Dim n As Long www.Select i=i+1 Wend End Sub Función 83 Macros Otra variante: Sub final2() While ActiveCell.ceepvirtual. While. Sheets("Hoja2")..Activate '.

com/materias/12/HEXCEL/trucos.ceepvirtual.htm 17/17 .Select n = Selection.End(xlUp).Row Excel Avanzado Página de Inicio Å Home Excel Financieras Macros Adolfo Aparicio © 2004-2007 www.21/05/13 Dim n As Long Range("B100").