Está en la página 1de 27

Universidad de Oriente

Núcleo Anzoátegui
Escuela de Ingeniería y Ciencias Aplicadas
Departamento de Sistemas Industriales
Computadores II (Sección 01)

MACROS EN MS EXCEL
CON VBA

Profesor: Bachiller:
Pedro Rodriguez Karelys Perez

Puerto La Cruz, 17 de diciembre 2021.


1. ¿Qué es una Macro?

Es una serie de pasos que se almacenan siguiendo cierta secuencia y


estructura, que luego se pueden repetir incontables veces activándolos con una
combinación de teclas o algún botón programado para ello
2. ¿Qué es la Grabadora de Macros?

Es una herramienta con la que cuenta el Excel, que le permite al usuario


desarrollar macros de una manera transparente y fácil; lo cual solo consiste en:
encender la grabadora, desarrollar el proceso a grabar como habitualmente lo
hacemos en el Excel, y finalmente detener la grabación; paralelamente, a medida
en que avanzamos en los pasos anteriores, la grabadora de macros va
codificando el programa correspondiente en VBA (Visual Basic para Aplicaciones).
3. ¿Qué es el VBA (Visual Basic para Aplicaciones)?

Es un lenguaje de programación que trae integrado las aplicaciones


Windows, como el Excel, y que nos permite manejarlas independientemente como
a través de un control remoto. Hay que resaltar que a pesar de que el VBA viene
dentro del Excel (u otra aplicación Windows) no tiene ningún vínculo especial que
le ate a él. De hecho, el Excel expone sus destrezas a Visual Basic a través de
una serie de órdenes especiales denominadas biblioteca de objetos, y Visual
Basic a su vez se comunica con esa biblioteca de objetos del Excel.
4. ¿Qué es una Macro Simple?

Son las que repiten una serie de pasos ejecutados durante la grabación, sin
toma de decisiones ni estructuras personalizadas de programación.
5. ¿Qué es una Macro Inteligente?

Macros con estructura lógica de programación, que pueden tomar


decisiones e interactuar con el usuario, lo que garantiza su flexibilidad

6. ¿Cuáles son las principales estructuras básicas de programación en


VBA, y descríbalas?

Las macros generadas con la grabadora son demasiado elementales.


Pueden repetir lo que hemos hecho mientras las grabábamos, pero no son
capaces de adaptarse a circunstancias variables; o sea, no son capaces de tomar
decisiones ni de desarrollar procesos repetitivos. La única forma de transformar
las macros simples en macros inteligentes, es añadiéndoles a mano las
estructuras de control (elementos del lenguaje de programación que permiten
generar bloques de decisión y bucles repetitivos) de las que adolecen. Estas
estructuras en Visual Basic, son las siguientes:

I. Bloques de Decisión (elementos para toma de decisiones)


a) IF...THEN (Selección Simple)
SINTAXIS:
IF <Condición> THEN
Bloque de Instrucciones
END IF
b) IF...THEN...ELSE (Selección Binaria).

SINTAXIS:
IF <Condición> THEN
Bloque de Instrucciones (Caso Positivo)
ELSE
Bloque de Instrucciones (Caso Negativo)
END IF.

c) SELECT CASE (Selección Múltiple)

SINTAXIS:
SELECT CASE <Expresión - Prueba>
CASE <Lista 1 - Expresiones>
Bloque 1 - Instrucciones
CASE <Lista 2 - Expresiones>
Bloque 2 - Instrucciones
CASE <Lista 3 - Expresiones>
Bloque 3 - Instrucciones
END SELECT.

II. Bucles Repetitivos (elementos para procesos iterativos):

a) DO...WHILE...LOOP (Hacer Mientras La Condición Sea Cierta)

SINTAXIS:
DO WHILE <Condición>
Bloque de Instrucciones
LOOP
Ó
DO
Bloque de Instrucciones
LOOP WHILE <Condición>

b) DO UNTIL (Hacer Hasta Que La Condición Se Haga Cierta)

SINTAXIS:
DO UNTIL <Condición>
Bloque de Instrucciones
LOOP
Ó
DO
Bloque de Instrucciones
LOOP UNTIL <Condición>

c) FOR NEXT (Repetición Controlada De Un Bloque De Instrucciones)

SINTAXIS:
FOR <Contador = Inicio> TO <final> [STEP <incremento>]
Bloque de Instrucciones
[EXIT FOR]
Bloque de Instrucciones
NEXT < Contador>

7. ¿Cómo escribir en una celda de Excel desde una Macro?

La comunicación más crítica de una macro en Visual Basic con el Excel, es


la que debe darse entre los módulos del programa y las celdas de las hojas de
cálculo, por lo tanto, es fundamental conocer bien los métodos básicos para
establecer tal comunicación, entre los cuales tenemos:
a) Escribir en una celda desde una macro:

ActiveCell.FormulaR1C1= Número, Rótulo (entre comillas), Fórmula (entre


comillas) ó variable.

8. ¿Cuáles son los tipos de notación de direcciones y rangos de celdas


como argumentos de funciones y fórmulas, en una macro de VBA, y
cuál es sus sintaxis?

Notación de rangos como argumentos de funciones en una macro:


a) Referencia absoluta:

“=FUNCIÓN(R#filaC#columna:R#filaC#columna)"
b) Referencia relativa:

“=FUNCIÓN(R[#fila]C[#columna]:R[#fila]C[#columna])"

Pueden definirse de dos formas: a través de dos argumentos


correspondientes a sus límites, o con un único argumento formado por algo que el
Excel pueda interpretar como la dirección de un rango. Como se muestra en los
siguientes ejemplos:

a) Range(“A1", "B2").Select (Excel selecciona el rango desde A1 hasta B2)


b) Range(ActiveCell, "C4”).Select (Excel selecciona el rango desde la celda
activa hasta C4)
c) Range(“D5:E6").Select (Excel selecciona el rango desde D5 hasta E6)
d) Range(“F7:G8").Name = “R_Prueba" (Asignar el nombre R_Prueba al
rango F7:G8)
e) Range(“R_Prueba").Select (Excel selecciona el rango R_Prueba  F7:G8)
f) Range(“H9").Select (Excel selecciona la celda H9)
g) ActiveCell.Range(“B3").Select (Selecciona la celda ubicada 1 columna a
la derecha. y 2 filas debajo de la celda activa)
h) Range(“R_Prueba").Range(“A1").Select (Excel selecciona la celda F7, la
primera del rango “R_Prueba”)

 RANGOS COMO COLECCIONES DE OBJETOS:


Al igual que al conjunto de colecciones que ya hemos visto. También a un
objeto rango se le puede manipular como a un conjunto de celdas, o sea,
considerársele como un objeto colección de celdas. No obstante, este último tipo
de conjunto es un tanto más complejo que una colección de hojas de cálculo, ya
que las celdas poseen dos dimensiones (filas y columnas) mientras que las hojas
de cálculo solo una. Siempre será posible interpretar un rango de celdas, no solo
como un conjunto finito de celdas, sino también como un conjunto de filas o de
columnas. De la afirmación anterior, se derivan las tres propiedades con que
cuenta el Excel, para manejar un rango como una colección de objetos. Estas
propiedades son:
1. Propiedad Cells: devuelve un conjunto de celdas, las cuales pueden
referirse como grupo o individualmente. Ejemplo:
a) Range("A1:E4").Cells.Count (Excel cuenta el número de celdas
dentro del rango A1:E4)
b) Cells(1,4).Select (Excel selecciona la celda D1, celda ubicada en la
primera fila y cuarta columna de la hoja de cálculo)
2. Propiedad Rows: devuelve un conjunto de filas con las mismas cualidades
de referencia que la propiedad anterior. Ejemplo:
a) A = Rows.Count (Excel asigna a la variable A el número total de filas
que contiene la hoja de cálculo)
b) Range("A1:E4").Rows(2).Select (Excel selecciona la segunda fila
del rango, desde A2 hasta E2)
3. Propiedad Columns: devuelve un conjunto de columnas, que a pesar de lo
que pudiéramos pensar, constituye un objeto de la misma clase (objeto
rango) que el de las dos anteriores. Ejemplo:
a) Columns(2).Select (Excel selecciona toda la columna B)
b) Colums(Columns.Count).Select (Excel selecciona la última
columna de la Hoja de cálculo, la columna IV)

 RANGOS DERIVADOS O CALCULADOS:


Todas las propiedades y métodos que hemos estudiado hasta ahora,
pertenecientes al objeto Application, trabajan con toda la hoja de cálculo usando
como punto de referencia inicial la celda A1. Sin embargo, en los casos en que
aplicamos la propiedad Range pudimos seleccionar un rango relativo a otro rango
más pequeño, dentro de la hoja de cálculo. Adicionalmente a éste, el Excel tiene
otras propiedades que le permiten calcular, con total exactitud, un nuevo rango a
partir de uno existente. Estas propiedades son:
1. Propiedad Offset: Devuelve un objeto Range que representa un rango
desplazado (número de filas arriba o abajo, número de columnas a la
izquierda o a la derecha) con respecto al rango especificado. Ejemplo:
a) Range("C3:E6”).Offset(1,0).Select (Excel selecciona el rango C4:E7,
desplazando el rango Range una fila hacia abajo).
2. Propiedad Resize: Cambia el tamaño del rango especificado. Devuelve un
objeto Range que representa el rango redimensionado (nuevo número e
filas, nuevo número de columnas). Ejemplo:
a) Range("C3:E6”)Resize(,4). Select (Excel selecciona el rango C3:F6,
una columna más ancha que el rango Range)
3. Propiedades EntireColumn y EntireRow: Devuelven un objeto Range que
representa todas las columnas (EntireColumn) o todas las filas (EntireRow)
que contiene el rango especificado. Ejemplos:
a) Range("C3:E6").EntireColumn.Select (Excel selecciona el rango de
columnas C:E)
b) Range("C3:E6”)EntireRow.Select (Excel selecciona el rango de filas
3:6)

9. ¿Qué son las Variables de un programa o macro en VBA, y cuáles son


los tipos de variables que reconoce?

Son posiciones o lugares en la memoria del computador en donde los


programas pueden almacenar información dinámica, o sea, cuyo contenido puede
variar durante la ejecución de los mismos

Tipos de variables (tipo):


1. Boolean: Solo admite 2 valores TRUE o FALSE
2. Byte: Admite valores entre O y 255
3. Integer: Admite valores entre -32.768 y 32.767
4. Long: Admite valores entre -2.147.483.648 y 2.147.483.647
5. Single: Admite valores decimales con precisión simple (4 bytes)
6. Double: Admite valores decimales con precisión doble (8 bytes)
7. Currency: Válido para valores de tipo moneda
8. String: Válido para cadena de caracteres
9. Date: Válido para datos tipo fecha (permite operar con ellas)
10. 0bject: direcciones de 32 bits (4 bytes) que hacen referencia a objetos
11. Variant: Tipo genérico, puede almacenar información numérica, de un string
o de fecha.
10. ¿Dónde y cómo se declaran las variables en una macro de VBA
(describa la sintaxis)?

En Visual Basic es recomendable declarar las variables antes de usarlas, ya


que, esto nos permite controlar eficientemente los tipos de datos y su manejo en la
memoria del computador.
En donde:
 Dim: Se utiliza cuando se desea que la variable sea local al ámbito en que
se declara. Puede ser dentro de un procedimiento o dentro de un
formulario, de esta forma no sería accesible desde los demás
procedimientos o formularios.
 Public: Se utiliza cuando se desea que la variable sea pública y pueda estar
accesible desde todos los formularios de la aplicación. Para conseguirlo
tendremos que declararlas en un módulo de código, no en la sección
declaraciones de cualquier formulario de los que conste la aplicación.

 Static: Se utiliza cuando se desea que las variables locales no se creen ni


se destruyan al entrar y salir de los procedimientos donde fueron
declaradas, sino que mantengan su valor durante todo el periodo de
ejecución de la aplicación. De esta forma al entrar en algún procedimiento
las variables recuerdan el valor que tenían cuando se salió de él.

La forma de declarar las variables es la siguiente:


Dim I Public I Static nombre_variable As tipo

11. ¿Qué es la Programación de Eventos Sobre Objetos?

El Visual Basic es un lenguaje orientado a la programación de eventos


sobre objetos. Esto significa que su filosofía principal en el desarrollo de
programas, se basa en la posibilidad de asignar código a los diferentes eventos
que deban manejarse o ejecutarse, sobre los objetos contemplados en el diseño
de una aplicación; dichos códigos se ejecuten en el instante en que el usuario del
programa produzca los eventos sobre tales objetos. La programación de eventos
en Excel es de suma importancia cuando necesitamos controlar el
comportamiento de Excel en base a las acciones tomadas por el usuario.

12. ¿Qué es un Objeto?

Un objeto es un elemento que desempeña una función y que es utilizado


para lograr un objetivo preestablecido; no importando, como fueron construidos ni
cómo funcionan, sino solamente el saber para qué se usan. Como, por ejemplo,
una hoja de cálculo, una celda, un gráfico, un formulario o un informe.

13. ¿Qué es un Evento?

Un evento es una acción (hacer clic, arrastrar, pulsar una tecla, cargar una
ventana, etc.) que se realiza sobre un objeto y que provoca la ejecución del
procedimiento (código) asociado a ese suceso en particular. Actúa cuando el usuario
introduce ciertos parámetros que el sistema reconoce y normalmente están
relacionados con los objetos de Excel (celdas, rangos, hojas, libros…).

14. ¿Qué tipos de objetos se manejan en las macros de Excel-VBA?

En Visual Basic para Aplicaciones, tendremos que manejar dos tipos de


objetos: en primer lugar los objetos que normalmente maneja Visual Basic, como
son los controles, formularios, cajas de texto o menús; y adicionalmente los
objetos propios de la aplicación, en este caso los del Excel (Libros, Hojas de
cálculo, Rangos y Celdas). Pero a pesar de esta tipificación, hay que resaltar que
Visual Basic interactúa con el Excel trabajando con todos estos objetos; y que en
consecuencia, hay que conocerlos y manejarlos a todos.

15. ¿Qué son las Propiedades de los Objetos en VBA y cuál es su


sintaxis?

La propiedad de un objeto es un atributo que define una de sus


características, tal como: tamaño, color, localización en la pantalla, o algún
aspecto de su comportamiento, por ejemplo si esta visible o activado. Para
cambiar las características de un objeto, se cambia el valor de sus propiedades (si
no es de solo lectura).
Siguiendo la siguiente sintaxis: Objeto. Propiedad = Valor

16. ¿Qué son los Métodos de los Objetos en VBA y cuál es su sintaxis?

Son procedimientos asociados a los objetos, es decir, rutinas ya


establecidas que podemos invocar desde nuestras macros para que se realice
alguna operación sobre el objeto. Los métodos pueden requerir información
adicional en forma de argumento.
Su sintaxis es la siguiente: Objeto. Método Arg1, Arg2 ... ArgN

17. ¿Cuál es la diferencia entre Propiedades y Métodos de los Objetos en


VBA?

Las propiedades son las características del objeto Si una persona fuera un
objeto de Excel sus propiedades serían el color de sus ojos, el color de su cabello,
su estatura, su peso. Y los métodos son las acciones que el objeto puede hacer
Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus métodos
serían correr, caminar, hablar, dormir.

18. ¿Qué son las colecciones de objetos para el Excel-VBA y liste las
principales que se manejan en ellas?

Una colección de objetos es un conjunto ordenado de elementos


relacionados, a los que se les puede hacer referencia como una unidad. La
posición de un objeto en la colección puede cambiar, ya que las colecciones de
objetos admiten los métodos de añadir y eliminar elementos a su conjunto.
i. WorkBooks.Add: (método que añade un nuevo libro a la colección)
ii. Sheets.Add: (método que añade una nueva hoja a la colección del libro de
trabajo activo)
iii. WorkBooks.Count: (propiedad de solo lectura que cuenta cuántos libros hay
en la colección)
iv. Sheets.Count: (propiedad de solo lectura que cuenta cuántas hojas hay en
la colección del libro de trabajo activo)
v. WorkBooks.Close: método que permite cerrar todos los libros de la
colección)
Para hacer referencia a un elemento individual dentro de una colección, se
puede utilizar su posición, su nombre o su estatus. A continuación listaremos los
ejemplos más comunes de cada método:
I. Llamando a un libro o a una hoja de cálculo, individualmente, por su
posición o por su nombre (para ambos casos se usa el método Ítem; el cual
crea un enlace entre el elemento individual y la colección a la cual
pertenece, a través de un argumento simple, que puede ser la posición del
elemento o algún rótulo que lo identifique):
a) WorkBooks.Item(#).Close (Cerrar el libro que está en la posición #)
b) Sheets.ltem(#).Delete (Borrar la hoja de cálculo que está en la posición #
del libro de trabajo activo)
c) WorkBooks.ltem("LibroX”).Activate (Activar el libro de nombre LibroX)
d) Sheets.ltem("HojaX”).Select (Seleccionar la hoja de nombre HojaX del libro
de trabajo activo)
II. Llamando a un libro o a una hoja de cálculo, individualmente, por su estado
o estatus (para este caso se usa básicamente el prefijo Active):
a) ActiveWorkBook.Close (Cerrar el libro de trabajo activo)
b) ActiveWorkBook.Saved = False (Asignar a la propiedad Saved del libro de
trabajo activo, el valor False)
c) ActiveSheet.Paste (Pegar los datos previamente copiados en la hoja activa
del libro de trabajo activo)
d) ActiveSheet.Name = "HojaX"(Asignar a la propiedad Name de la hoja activa
del libro de trabajo activo, el valor HojaX)

19. ¿Cuál es el Objeto Principal en las Macros Excel-VBA e indique 3 de


sus propiedades más usadas?

El objeto principal en las macros Exel-VBA es la hoja de cálculo. La


propiedad de un objeto es un atributo que define una de sus características, tal
como: tamaño, color, localización en la pantalla.
20. Describa el manejo de colecciones de Celdas con uno y dos índices,
en macros en Excel con VBA, incluyendo estructura lógica y sintaxis.

Para hacer referencia a una celda de la hoja, se utiliza la colección Cells


que contiene todas las celdas de la hoja de cálculo, indicando el número de fila y
columna en la que se localiza. Si omitimos estos valores, entonces estaremos
haciendo referencia a todas las celdas de la hoja.

 Hacer referencia a todas las celdas de la hoja.

Cells.Select  (Seleccionar todas las celdas de la hoja activa)

 Hacer referencia  a una celda concreta de la hoja.

Cells(NFila, NColumna)

 Establecer el valor de la celda C2 de la hoja activa.

Cells(2,3).Value=”Curso Macros Excel”

ActiveCell (Celda Activa)


Para hacer referencia a la celda activa se utiliza el objeto ActiveCell.
El término ActiveCell sirve para referirse a la celda actualmente
seleccionada en una hoja de cálculo. Siempre que se haga click en cualquier
celda, esta automáticamente se convertirá en la ActiveCell. Una vez que la celda
es seleccionada se pueden introducir funciones o valores a la celda o modificar el
formato de los datos contenidos en ella.
 Seleccionar la hoja ‘Listados’ del libro, marcar la celda B5 para convertirla
en celda activa, introducir la fórmula A3*10% y a continuación establecer su
formato a negrita y cursiva. Adicionalmente desactivamos la actualización
de pantalla mientras realizamos operaciones sobre la hoja.

Application.ScreenUpdating = False Application.ScreenUpdating = False


Sheets("Listados").Activate Sheets("Listados").Activate
Cells(5,2).Select Range("B5").Select
ActiveCell.Formula = "=A3*10%" With ActiveCell
ActiveCell.Font.Bold = True .Formula = "=A3*10%"
ActiveCell.Font.Italic = True .Font.Bold = True
Application.ScreenUpdating = True .Font.Italic = True
End With
Application.ScreenUpdating = True

21. ¿Qué es una Macro Interactiva?

Son aquellas Macros que requieren datos del usuario, para luego usarlos en
la ejecución y toma de decisiones del programa.

22. ¿Qué es una Caja de Diálogo?

Las cajas de diálogo son elementos gráficos de las aplicaciones Windows,


constituidas por ventanas rectangulares, a través de las cuales se implementa la
comunicación entre el usuario y la aplicación. La caja de diálogo requiere datos al
usuario y/o le muestra información del programa.

23. ¿Qué es un Formulario Personalizado?


Los formularios Personalizados son los elementos básicos de desarrollo de
una aplicación en Visual Basic, y forman la parte visual de la aplicación (interfaz)
con la que va interactuar el usuario. Un formulario es una ventana que se
programa por medio de controles y estos controles responden a sucesos (eventos)
que nosotros programamos, personalizándolos de acuerdo al proceso que
deseamos desarrollar. Podemos comparar los formularios de Excel con los
formularios impresos en papel.

24. ¿Qué son los Controles de Formulario, y liste los de uso más
frecuente?

Los controles son objetos que se colocan en el formulario y cuya misión es


mostrar información, recibir datos del usuario, desencadenar la ejecución del
código ligado a ese control, Todo lo cual nos permite desarrollar y controlar
nuestras aplicaciones. Los de usos más frecuentes son: (cuadros de texto,
botones de comando, barra de desplazamiento, etc.)

25. ¿Qué son y cómo se definen las Referencias Remotas en una Fórmula
o Función de Excel?

Las referencias a datos de otros programas se denominan referencias


remotas.

26. ¿Qué es el InputBox y el MsgBox, y diga la aplicación general de cada


uno?

a) INPUTBox:
Muestra un mensaje en una caja de diálogo, espera que el usuario escriba
un texto o haga elle en un botón y devuelve un tipo String con el contenido del
cuadro de texto, el cual puede capturarse en una variable para luego aplicarlo a la
ejecución del macro.
Sintaxis: InputBox(prompt[, title][, defaultj[, xpos][, ypos][, helpfile, context])
En donde:
 Prompt: Requerido. Cadena de caracteres (String) que se muestra como
mensaje en la caja de diálogo. La longitud máxima de prompt es de
aproximadamente 1024 caracteres, según el ancho de los caracteres
utilizados. Si prompt consta de más de una línea, puede separarlos
utilizando un carácter de retorno de carro (Chr(13)), un carácter de avance
de línea (Chr(10)) o una combinación de los caracteres de retorno de carro-
avance de línea (Chr(13) y Chr(10)) entre cada línea y la siguiente.
 Title: Opcional. Cadena de caracteres que se muestra en la barra de título
del cuadro de diálogo. Si omite title, en la barra de título se coloca el
nombre de la aplicación.
 Default: Opcional. Cadena de caracteres 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 vacío.
 Xpos: Opcional. Expresión numérica que especifica, en twips, la distancia
en sentido horizontal entre el borde izquierdo del cuadro de diálogo y el
borde izquierdo de la pantalla. Si se omite xpos, el cuadro de diálogo se
centra horizontalmente.
 Ypos: Opcional. Expresión numérica que especifica, en twips, la distancia
en sentido vertical entre el borde superior del cuadro de diálogo y el borde
superior de la pantalla. Si se omite ypos, el cuadro de diálogo se coloca a
aproximadamente un tercio de la altura de la pantalla, desde el borde
superior de la misma.
 Helpfile: Opcional. Cadena de caracteres que identifica el archivo de Ayuda
que se utilizará para proporcionar ayuda interactiva para el cuadro de
diálogo. Si se especifica helpfile, también deberá especificarse context.

 Context: Opcional. Expresión numérica que es el número de contexto de


Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se
especifica context, también deberá especificarse helpfile.

b) MSGBOX:
Muestra un mensaje en una caja de diálogo, espera a que el usuario haga
clic en un botón y devuelve un tipo Integer correspondiente al botón elegido por el
usuario.
Sintaxis: MsgBox(prompt[, buttons][, title][, helpfile, context])
En donde:
 Prompt: Requerido. Cadena de caracteres (String) que representa el prompt
en la caja de diálogo. La longitud máxima del prompt es de
aproximadamente 1024 caracteres, según el ancho de los caracteres
utilizados. Si el prompt consta de más de una línea, puede separarlos
utilizando un carácter de retorno de carro (Chr(13)) o un carácter de avance
de línea (Chr(10)), o una combinación de caracteres de retorno de carro -
avance de línea (Chr(13) y Chr(10)) entre cada línea y la siguiente.
 Buttons: Opcional. Expresión numérica que corresponde a la suma de los
valores que especifican el número y el tipo de los botones que se pretenden
mostrar, el estilo de icono que se va a utilizar, la identidad del botón
predeterminado y la modalidad del cuadro de mensajes. Si se omite este
argumento, el valor predeterminado para buttons es 0.
 Title: Opcional. Cadena de caracteres que se muestra en la barra de título
de la caja de diálogo. Si se omite title, en la barra de título se coloca el
nombre de la aplicación.
 Helpfile: Opcional. Cadena de caracteres que identifica el archivo de Ayuda
que se utiliza para proporcionar ayuda interactiva en la caja de diálogo. Si
se especifica helpfile, también se debe especificar contexto
 Context: Opcional. Expresión numérica que es igual al número de contexto
de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se
especifica context, también se debe especificar helpfile.

27. ¿Qué es la Validación de Datos de Entrada y por qué nunca debe dejar
de hacerse?

La validación de datos consiste en introducir unas reglas en Excel para que


sólo se puedan ingresar determinados datos, o que los datos que se ingresen
cumplan determinadas condiciones o criterios. No se debe dejar de hacer para
Evitar que el usuario final de la hoja de cálculo introduzca valores incorrectos en
las celdas.
28. ¿Cuál operador lógico que se usa para filtrar conjunto de caracteres
específicos, y validar su entrada en una macro Excel-VBA, además
indique su sintaxis?

Los operadores lógicos podemos utilizarlos de dos formas: para después de


haber evaluado dos expresiones, normalmente relacionales, obtener un resultado
de tipo lógico (True "verdadero" o Fa/se "falso"); o para operaciones lógicas bit a
bit.
La siguiente tabla muestra una relación de los operadores lógicos, así como
los valores que devuelven según sean las expresiones de entrada Ex1 representa
el valor devuelto por la primera expresión, y Ex2 el de la segunda.
Operador Devuelve True si: Devuelve False si:
(por prioridad)
Not Ex1 = False Ex1 = True
And Ex1 = True y Ex2 = True En cualquier otro caso

Or En cualquier otro caso Ex1 = False y Ex2 = False

Xor Ex1 = True y Ex2 = False o Ex1 = False y Ex2 = True o


Ex1 = False y Ex2 = True Ex1 = True y Ex2 = False
Eqv Ex1 = es igual a Ex2 Ex1 = es distinto a Ex2

Imp Ex1 = True y Ex2 = True o Ex1 = True y Ex2 = False

Ex1 = False y Ex2 = True o


Ex1 = False y Ex2 = False

29. ¿Cómo distinguir un número entero de un número real para validar su


entrada en una macro Excel-VBA?

Con la función ENTERO. La función ENTERO redondea un número real


hacia abajo hasta el primer entero. Dicho de otro modo, la función ENTERO
evalúa una expresión numérica y devuelve la parte entera (es decir, quita los
decimales).
No es una función de uso diario pero puede servir, en algunas ocasiones,
para obtener el entero de una solución.
Sintaxis: =ENTERO(expresión_numérica)
Donde expresión_numérica hace referencia a la celda o número que queremos
obtener.

30. ¿Qué son los errores de Sintaxis en una macro Excel-VBA y como se
evidencian?

Son los errores que se producen cuando no respetamos plenamente, la


estructura que exige el Visual Basic, para la correcta escritura del código de las
macros. Por ejemplo, cuando se abren unas comillas que no se cierran en alguna
línea del código.
Los errores de sintaxis se detectan automáticamente a medida que se
introduce el código en VBA.
Para activar la comprobación de sintaxis, en el menú Herramientas,
seleccione Opciones, luego seleccione la pestaña Editor y marque la casilla
Comprobación de sintaxis automática.
Los errores de sintaxis no corregidos provocarán un error de compilación;
de ahí el mensaje que aparece

31. ¿Qué son los errores de Lógica en una macro Excel-VBA y como se
corrigen?

Son los errores que no puede detectar el Visual Basic, ya que no están
asociados a fallas de escritura del programa, si no, a la organización y nominación
de variables y procedimientos por parte del programador. Por ejemplo, si quiere
cambiar el nombre de una hoja de cálculo a "Datos" y escribe accidentalmente
"Dotas". La computadora nunca podrá detectar el error si posteriormente, usted
hace referencia al objeto, a través del nombre que pensó inicialmente asignarle a
dicha hoja.
COMANDO PASO A PASO POR INSTRUCCIONES:
Este comando ejecuta el código instrucción a instrucción. Cuando no esté
en modo diseño, Paso a Paso por Instrucciones inserta modos de interrupción en
la línea de ejecución actual. Si la instrucción llama a un procedimiento, la siguiente
instrucción que se muestra es la primera instrucción del procedimiento. En modo
de diseño, este elemento de menú inicia la ejecución y establece el modo de
interrupción antes de ejecutar la primera línea de código. Si no hay ningún punto
de ejecución actual, es posible que parezca que el comando Paso a Paso por
Instrucciones no hace nada hasta que usted realice alguna acción que
desencadene el código, por ejemplo, hacer elle en un documento.
Haciendo uso de este comando podemos monitorear el desarrollo del
programa, como lo indica su nombre, paso a paso por instrucción; lo cual nos
permite detectar y corregir cualquier error de lógica o de ejecución, que afectara el
desempeño proyectado para la macro.

32. ¿Qué se entiende por Captura de Errores en una macro Excel-VBA y


describa alguno de sus usos?

On error es la instrucción que nos permitirá el control de los diversos


errores que se pueden producir en las macros, vemos algunas de las posibles
formas en las que puede ser empleado.
 On error GoTo etiqueta

Esta primera forma determina a donde se va a producir el salto en el


aplicativo si se llega a producir un erorr, se suele usar un nombre de etiqueta y
volver a emplear el mismo nombre líneas después para delimitar el salto, también
se puede emplear el número de línea en lugar de una etiqueta. Notemos en el
ejemplo como al producirse un error no continúa la ejecución sino que se produce
el salto.
Sub ejemplo1()
On Error GoTo salto
For i = 1 To 5
MsgBox Sheets(i).Name
MsgBox i
Next i
salto:
MsgBox "Finalizado"
End Sub
 On error Resume Next

En este caso al producirse el error este es omitido, y se pasa a la siguiente


instrucción, notemos en el siguiente ejemplo que solo aparecen los nombres de
las hojas disponibles, y en cambio el mensaje con la variable "i" siempre se llega
a mostrar.
Sub ejemploerror()
On Error Resume Next
For i = 1 To 5
MsgBox Sheets(i).Name
MsgBox i
Next i
End Sub
 On error GoTo 0

En este caso la instrucción permite desactivar el control de errores que


hayamos colocado con anterioridad, notemos en el ejemplo como se activa el
control de errores, luego es desactivado, y producto de ello es que el error llega a
aparecer en el momento en que se ejecuta la macro.
Sub ejemplo2()
On Error Resume Next
MsgBox "Inicio"
On Error GoTo 0

For i = 1 To 5
MsgBox Sheets(i).Name
MsgBox i
Next i
End Sub

33. ¿De cuántas maneras podemos invocar la ejecución de una macro de


Excel-VBA y coméntelas brevemente?
Hay muchas maneras diferentes de ejecutar un macro. La manera más
normal de ejecutarlo es desde la barra de herramientas, sin embargo, existen
otras muchas posibilidades para ejecutar una macro que nos pueden ser de gran
utilidad en determinados casos. A continuación explicamos algunas de estas
posibilidades.
 EJECUTAR UNA MACRO DESDE LA BARRA DE HERRAMIENTAS

Para ejecutar una macro desde la barra de marcadores debes ir a:


Pestaña Vista >> Grupo Macros >> Botón Macros

También se puede ejecutar desde la pestaña Programador (si no la tienes


activada te explicamos cómo hacerlo aquí).
Pestaña Programador >> Grupo Código >> Botón Macros

 EJECUTAR UN MACRO DESDE EL EDITOR DE VISUAL BASIC (VBE)


Para ello lo primero que tienes que hacer es abrir el Editor de Visual Basic
(VBE) desde la pestaña Programador o simplemente pulsando Alt + F11
Una vez abierto VBE puedes ejecutar la macro seleccionada pulsando F5 o
dándole al botón de Play (►) en la barra de herramientas.

 EJECUTAR UNA MACRO CON UN ACCESO RÁPIDO (CTRL + TECLA)


Para asignar un acceso rápido a un macro lo primero que tienes que hacer
es abrir la ventana de diálogo de macros (en la pestaña Vista o Programador).
Una vez abierta esta ventana selecciona la macro a la que quieras asignar un
acceso rápido y a continuación pulsa el botón Opciones. En la nueva ventana que
se abre escribe la letra que quieres que ejecute la macro (no todas valen, como es
lógico, ya hay muchas que están cogidas como por ejemplo el popular Ctrl + C) y
pulsa Aceptar.

 EJECUTAR UNA MACRO DESDE OTRA MACRO

Una macro se puede ejecutar desde otra macro utilizando la instrucción


Call. Por ejemplo como podemos ver en el siguiente procedimiento.
Sub macro1()
Call macro2
End Sub
Sub macro2()
MsgBox ("Has ejectuado el macro1")
End Sub
En esta macro que acabamos de ver, la Macro1 llama a la Macro2 mediante
la instrucción call. Es decir, al ejecutar la macro1 esta irá directamente a ejecutar
la macro2 cuando llegue a la instrucción Call.
 EJECUTAR UNA MACRO CUANDO CAMBIE EL VALOR DE UNA
CELDA
Cambiar el valor de una celda en VBA se considera un evento. ¿Sabes lo
que son los eventos? Si quieres aprender más de este tema puedes leer el
artículo: ¿Qué son los eventos en VBA? Hay diferentes tipos de eventos, como
pueden ser guardar el documento, abrirlo, añadir una hoja etc. Todos estos
eventos ya vienen predefinidos en VBA. El ejemplo a continuación explica el
evento Change o cambio de valor de una celda. El procedimiento sería similar
para el resto de eventos:
Los pasos a seguir son los siguientes:
a) Abrir VBE (Alt + F11)

b) Para el cambio de valor de una celda tenemos que escribir el código en la


hoja en la que se encuentra esa celda.

c) En la esquina superior izquierda del editor de código seleccionamos la


opción Worksheet

d) En la parte superior derecha seleccionamos el evento que queremos que


ejecute la macro, en nuestro caso es un cambio de valor en una celda o
Change:
e) Una vez seleccionado el evento, VBE escribe automaticamente la iniciación
del macro:

Private Sub Worksheet_Change(ByVal Target As Range)


'mi código
End Sub
f) A continuación lo único que tenemos que hacer es definir el target (celda
que al cambiar ejecute el macro) y escribir el código que queremos que
ejecute cuando ese valor cambie:

Private Sub Worksheet_Change(ByVal Target As Range)


If Target.Address = “$A$1” Then
MsgBox (“Has cambiado el valor de la celda “& Target.Address)
End If
End Sub
g) A partir de ahora cada vez que cambiemos el valor de la celda A1 nos
aparecerá el siguiente mensaje en pantalla:

El evento change se refiere al cambio de valor de una celda. Cuando la


celda contiene una formula y lo que cambia es el resultado de la formula la macro
NO se ejecutará ya que el contenido de la celda (en este caso una fórmula) sigue
siendo la misma. Para este caso el evento que queremos generar es el evento
Calculate.

También podría gustarte