Excel con VBA-4

Share Embed Donate


Short Description

Descripción: macros...

Description

Procedimientos Sub Un procedimiento es una serie de instrucciones de VBA que residen en un módulo de VBA, al que se tiene acceso a través del Editor VB. Un módulo puede tener cualquier número de procedimientos. Un argumento es simplemente información que el procedimiento usa y que se “pasa” “pasa” al procedimiento cuando este se se ejecuta. DECLARAR UN PROCEDIMIENTO SUB

[Priva [Private te | Publ Public ic ] [Static] Sub nombre [(lista_argumentos)] [instrucciones] [Exit Sub] [instrucciones] End Sub Private. Opcional. Indica que el procedimiento es accesible sólo para otros procedimientos del mismo módulo. Public. Opcional. Indica que el procedimiento es accesible para todos los demás procedimientos de todos los demás módulos de un libro de trabajo. Ofimática - Excel con VBA - Parte 4

1

Procedimientos Sub Static. Opcional. Indica que las variables del procedimiento se conservan cuando el procedimiento concluye. Sub. Requerido. Palabra clave que indica el principio de un procedimiento. Nombre. Nombre. Requerido. Cualquier nombre de procedimiento válido (Igual que las variables, variables, pero no se pueden poer nombres de celdas, celdas, i.e., J34). lista_argumentos. Opcional. Representa una lista de variables, encerradas entre paréntesis, que reciben argumentos pasados al procedimiento. Para separar los argumentos se usa una coma. Instrucciones. Opcional. Representa las instrucciones de VBA válidas. Exit Ex it Sub. Sub. Opcional. Una instrucción que fuerza una salida inmediata del procedimiento antes de su su conclusión conclusión formal. formal. End En d Sub. Sub. Requerido. Indica el fin del procedimiento.

Ofimática - Excel con VBA - Parte 4

2

Ejecutar procedimientos Sub Existen varias maneras de ejecutar un procedimiento Sub de VBA: •







Con el comando Ejecutar, Ejecutar Sub/UserForm (en el Editor de VB), o presionando la tecla de método abreviado F5. Excel ejecuta el procedimiento hasta la posición del cursor. Este método no funciona si el procedimiento requiere uno o más argumentos. Desde el cuadro de diálogo Macro de Excel. Con la combinación de método abreviado Control-tecla, asignada al procedimiento. Haciendo clic sobre el botón o forma de una hoja de cálculo. Este botón o forma debe tener un procedimiento asignado.



Desde otro procedimiento que se escriba.



Desde un botón de la barra de herramientas.



Desde un menú personalizado que se desarrolle.



Cuando ocurre un evento. Estos eventos incluyen apertura del libro de trabajo, guardar el libro de trabajo, cerrarlo, hacer un cambio a una celda, activar una hoja y otros muchos temas.

Ofimática - Excel con VBA - Parte 4

3

Ejecutar desde menú personalizado Excel proporciona dos maneras de personalizar sus menús: usando el comando Ver, Barra de Herramientas, Personalizar, o escribiendo un código VBA. EJEMPLO Se supone que el nuevo elemento del menú está en el menú Datos, que el texto del elemento del menú es Abrir Archivo Cliente y que el procedimiento se llama AbrirArchivoCliente 1) Seleccionar el comando Ver, Barras de Herramientas, Personalizar. Excel presenta el cuadro de diálogo Personalizar. 2) Hacer clic sobre la ficha de Comandos del cuadro de diálogo Personalizar. 3) Desplazarse por la lista de Categorías y hacer clic sobre Macros. 4) En la lista de Comandos, arrastrar el primer elemento (etiquetado como Personalizar elemento de menú) hasta el final del menú Datos. 5) Hacer clic con el botón derecho del ratón sobre el nuevo elemento de menú.

Ofimática - Excel con VBA - Parte 4

4

Ejecutar desde menú personalizado 6) Introducir un nombre para el nuevo elemento: A&brir archivo cliente. 7) Hacer clic sobre Asignar macro sobre el menú contextual. 8) Seleccionar el procedimiento AbrirArchivoCliente de la lista de macros. 9) Hacer clic sobre Aceptar del cuadro de diálogo Asignar macro y hacer clic sobre Cerrar para cerrar el cuadro de diálogo Personalizar. Después de seguir el proceso mencionado anteriormente, el nuevo elemento de menú siempre aparecerá en el mismo menú (incluso cuando el libro de trabajo que contiene la macro no esté abierto). Ofimática - Excel con VBA - Parte 4

5

Ejecutar desde otro procedimiento Se puede realizar de tres modos: 1) Introducir el nombre del procedimiento seguido por sus parámetros (si los tuviese), separados por comas. 2) Usar la palabre clave Call, seguida del nombre del procedimiento y después sus parámetros (si los tuviese) encerrados entre paréntesis y separados por comas. 3) Usar el método Run del objeto Application. Este método es útil cuando es necesario ejecutar un procedimiento y el nombre del mismo está asigando a una variable. Ejemplo del caso 1 Sub MiSub() ´ ....Código del procedimiento ActualizarHoja End Sub Ofimática - Excel con VBA - Parte 4

Sub ActualizarHoja() ´ ....Código del procedimiento End Sub

6

Ejecutar desde otro procedimiento Ejemplo del caso 2 Sub MiSub() NumMes = InputBox(“Número del Mes: ”) Call ActualizarHoja(NumMes) ´ ....Código del procedimiento End Sub Sub ActualizarHoja(Mes) ´ ....Código del procedimiento End Sub

Aunque es opcional, algunos  programadores siempre usan la palabra Call, sólo para que quede perfectamente claro que se está llamando a otro  procedimiento.

Ofimática - Excel con VBA - Parte 4

7

Ejecutar desde otro procedimiento Ejemplo del caso 3 Sub MiSub() NumMes = InputBox(“Número del Mes: ”) Result = Application.Run (“ActualizarHoja”, NumMes) ´ ....Código del procedimiento End Sub Sub ActualizarHoja(Mes) ´ ....Código del procedimiento End Sub

Ofimática - Excel con VBA - Parte 4

8

Ejecutar desde otro procedimiento Otro ejemplo del caso 3 Sub LlamadaVariable Dim CualSub As String CualSub = InputBox(“Nombre de la Subrutina”) Call CualSub ´Línea incorrecta!!!! End Sub Sub LlamadaVariable Dim CualSub As String CualSub = InputBox(“Nombre de la Subrutina”) Application.Run(CualSub) ´Ahora funciona!!!! End Sub

Ofimática - Excel con VBA - Parte 4

9

Llamada desde otro módulo Si VBA no puede localizar un código llamado en el módulo actual, busca en los procedimientos públicos de otros módulos, en el mismo proyecto. Si se necesita llamar a un procedimiento privado dentro de otro procedimiento, ambos procedimientos deben residir en el mismo módulo. No se puede tener dos procedimientos con el mismo nombre en el mismo módulo, pero se pueden tener nombres idénticos en diferentes módulos. Por ejemplo : Modulo1. MiSub Call Modulo1.MiSub Si no se diferencian los procedimientos que tienen el mismo nombre, aparece un mensaje de error. Ofimática - Excel con VBA - Parte 4

10

Llamada desde otro libro de trabajo En algunos casos, puede ser necesario que el procedimiento ejecute otro procedimiento definido en un libro de trabajo diferente. Para ello existen dos opciones: – Establecer una referencia al otro libro de trabajo – Usar el método Run y especificar el nombre del libro de trabajo explícitamente Para añadir una referencia a otro libro de trabajo, se selecciona el comando Herramientas, Referencia del Editor de VB, que presenta una lista con todas las referencias disponibles, incluyendo todos los libros de trabajo abiertos. Simplemente se selecciona la casilla que corresponde al libro de trabajo que se quiere añadir como una referencia y se hace clic en Aceptar. Después de establecer la referencia, se pueden llamar a procedimientos del libro de trabajo como si estuviesen en el mismo libro del procedimiento que llama. Un libro de trabajo referenciado no tiene porqué estar abierto. Para establecer una refrencia a un libro de trabajo que no está abierto, se usa el botón Examinar del cuadro de diálogo Referencias.

Ofimática - Excel con VBA - Parte 4

11

Llamada desde otro libro de trabajo

Ofimática - Excel con VBA - Parte 4

12

Llamada desde otro libro de trabajo Si se ha establecido una referencia aun libro de trabajo que contiene el procedimiento SuSub, por ejemplo, se puede usar cualquiera de las siguientes instrucciones para llamar a SuSub: SuSub Call SuSub Para una identificación precisa de un procedimiento de un libro de trabajo diferente, se especifica el nombre del proyecto, el nombre del módulo y el procedimiento usando la siguiente sintaxis: MiProject.MiModulo.MiSub Call MiProject.MiModulo.MiSub Otro modo de llamar a unprocedimiento de un libro de trabajo diferente es usar el método RUN: Application.Run “´macrospresupuesto.xls´!Consolidar”  Ofimática - Excel con VBA - Parte 4

13

Ejecutar desde ventana inmediato También se puede ejecutar un procedimiento mediante la introducción de su nombre en la ventana Inmediato (Control-G). La ventana Inmediato ejecuta instrucciones de VBA cuando se introducen en ella. Este método puede ser muy útil cuando se está diseñando un procedimiento porque se pueden insertar comandos para desplegar los resultados en la ventana Inmediato. EJEMPLO Sub CambiarCase MiCadena = “Esto es una prueba”  MiCadena = Ucase(MiCadena) Debug.Print MiCadena End Sub

Ofimática - Excel con VBA - Parte 4

14

Argumentos Los datos pasados por un argumento pueden ser: l Una variable l Una constante l Un literal l Una mattriz l Un objeto EJEMPLO Public Sub Saluda(Nombre As String) MsgBox "Hola " & Nombre & "; esta usando " & Application.Name End Sub Al llamarla tenemos que suministrar un nombre de usuario. El procedimiento Saludos llama al anterior de varias formas todas ellas equivalentes y con el mismo resultado

Ofimática - Excel con VBA - Parte 4

15

Argumentos

Sub Saludos() Dim Nombre Usuario As Integer Dim Nombres(10) As Integer NombreUsuario = “José Ruiz Hernandez”  Nombres(1) = “José Ruiz Hernandez”  Call Saluda “José Ruiz Hernandez”  Call Saluda NombreUsuario Call Saluda Nombres(1) End Sub Ofimática - Excel con VBA - Parte 4

16

Argumentos El siguiente ejemplo calcula la media de los elementos de una matriz de una dimensión Sub Media(num() As Integer) Dim i as Integer, suma As Integer, c As Integer For i = Lbound(num) to Ubond(num) suma = suma + num(i) c=c+1 Next MsgBox “La media es: “ & Str(suma/c) End Sub Sub LlamarMedia Dim mat(5) As Integer mat(1) = 4:mat(2) =5:mat(3) =8:mat(4) =1:mat(5) =2 media(mat) End Sub

Ofimática - Excel con VBA - Parte 4

17

Par ámetros por valor o por referencia En el caso de pasar el dato de un parámetro como una variable, el procedimiento receptor puede efectuar modificaciones en el valor de la variable parámetro. EJEMPLO Sub Cuadrado(num As Long) num = num * num End Sub Este procedimiento recibe un valor en el parámetro num el cual es elevado al cuadrado. Si lo usamos del siguiente modo: Sub Llamar_a_Cuadrado() Dim x As Long x=5 Call Cudrado(x) MsgBox “Cuadrado del número: “+ Str(x) End Sub

Ofimática - Excel con VBA - Parte 4

18

Par ámetros por valor o por referencia obtendremos el cuadrado del número: 25 y además el nuevo valor de la variable x será 25. Cuando el procedimiento llamado puede modificar las variables del procedimiento que llama decimos que es un paso de parámetros por referencia. Si el procedimiento llamado no puede modificar el contenido de una variable del procedimiento que llama se dice que el paso de parámetros se hace por valor. EJEMPLO Sub Cuadrado(ByVal num As Long) num = num * num End Sub Ahora el procedimiento Cuadrado no puede modificar el valor original de la variable num, ya que los pasamos por valor (ByVal) y por tanto no calculará nada.

Ofimática - Excel con VBA - Parte 4

19

Par ámetros por valor o por referencia Debemos modificarlo de la siguiente manera: Sub Cuadrado(ByVal num As Long) num = num * num MsgBox “Cuadrado del número: “+ Str(num) End Sub Sub Llamar_a_Cuadrado() Dim x As Long x=5 Call Cudrado(x) End Sub Si se pasa una variable definida como tipo de dato definido por el usuario a un procedimiento, se tiene que pasar por referencia. Intentar pasarla por valor genera un error. Ofimática - Excel con VBA - Parte 4

20

Par ámetros por valor o por referencia UN EJEMPLO REAL El objetivo de este ejercicio es diseñar una utilidad que ordene las hojas de un libro de trabajo por orden alfabético. Requerimientos del proyecto Debe clasificar las hojas de un libro de trabajo activo, en orden ¡ ascendente. Debe ser muy fácil de ejecutar ¡ Siempre debe estar disponible. En otras palabras, el usuario no ¡ tiene por que abrir un libro de trabajo para emplear esta utilidad. Debe funcionar adecuadamente para cualquier libro de trabajo ¡ abierto. No debe presentar ningún mensaje de error de VBA. ¡ Lo que sabemos A menudo, la parte más difícil del proyecto es saber por dónde empezar. En este caso hemos empezado por hacer una lista de lo que se sabe acerca de Excel que pueda ser relevante para los requerimientos del proyecto:

Ofimática - Excel con VBA - Parte 4

21

Par ámetros por valor o por referencia Lo que sabemos ¡ Excel no tiene comandos que ordenen hojas ¡ Se puede mover una hoja fácilmente, arrastrando su etiqueta de hoja. l

Nota a tener en cuenta: activar el Grabador de macros y arrastrar una hoja a una situación para encontrar el tipo de código que genera esta acción.

Es necesario saber cuántas hojas hay en el libro. Esta información se puede obtener con VBA. ¡ Es necesario saber el nombre de todas las hojas. Esto también se puede obtener con VBA. ¡ Excel tiene un comando que ordena los datos de las celdas en una hoja de cálculo. ¡

l

Nota a tener en cuenta: que se pueden transferir los datos a un rango y usar esta opción, o tal vez VBA tiene un método de ordenación que se puede aprovechar.

Gracias al cuadro de diálogo opciones de la macro, es fácil asignar una tecla de método abreviado a una macro. ¡ Si se guarda una macro en el Libro de macros personal, siempre estará disponible. ¡

Ofimática - Excel con VBA - Parte 4

22

Par ámetros por valor o por referencia El planteamiento A pesar de no saber aún exactamente cómo proceder, se puede intentar planear una estructura preliminar que describa las tareas generales requeridas: 1) Identificar el libro de trabajo activo 2) obtener una lista de los nombres de las hojas de cálculo de un libro 3) Contar las hojas 4) Ordenarlas Lo que se necesita saber ¡ Cómo identificar el libro de trabajo activo ¡ Cómo contar las hojas del libro de trabajo activo ¡ Cómo obtener una lista de lo nombres de las hojas ¡ Como ordenar la lista Ofimática - Excel con VBA - Parte 4

23

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF