domingo, 1 de julio de 2018

VBA TEORÍA: MACROS Y FORMULARIOS

Nota: Recuerde que en la versión 2016 se debe guardar como un archivo de MS Excel habilitado para macros, es decir con la extensión .xlsm; caso contrario no guarda el código de las macros.

CÓDIGOS DE UNA MACRO DE EXCEL Para observar los códigos de una macro debemos seguir los pasos:
1. En primer lugar seleccione la celda B5 antes de empezar la grabación de la Macro, se visualiza:
2. Presione el Botón Grabar Macro del grupo Código MS Excel muestra el cuadro de Dialogo Grabar Macro:
3. Ingrese un nombre de la macro por ejemplo saludo
4. En la opción Método Abreviado escriba la letra s, por lo tanto la macro se llamará con Control + s 5. En Guardar macro en: Seleccione en el lugar en donde desea guardar la macro, por ejemplo Este libro.
6. En Descripción puede agregar una descripción de lo que hace la macro, este punto es opcional. Solo le sirve para que usted recuerde acerca de lo que hace la macro, pues este código no es interpretado por el compilador.
7. Presione el botón Aceptar. Excel inicia la grabación del la Macro
 8. Trasládese a la celda A1 y escriba Hola amiguitos, después presione Enter para aceptar el valor en la celda.
9. Pare la grabación de la macro presionando el botón Detener Grabación del grupo Código. Excel ha grabado los pasos y ha generado un código.
10.Para visualizar el código generado, presione la tecla Alt + la tecla de función F11(Alt + F11), o de un clic derecho en la hoja de cálculo:
11.Seleccione la opción Ver código. También puede acceder al grupo Código, al dar clic en la opción Visual Basic
12. Excel nos traslada al Editor de Visual Basic. Se visualiza:
13.Active los siguientes cuadros o ventanas: • De clic en el Menú Ver y elija la opción Explorador de Proyectos • De clic en el Menú Ver y elija la opción Ventana Propiedades
14.Del cuadro Proyecto de doble clic en Módulos o simplemente presione el signo de + que aparece en la opción Módulos. Se activara debajo de Módulos la Opción Modulo1.
15.De doble clic en Modulo1. Se mostrará en el Editor de Visual Basic el código de la macro que grabamos de la siguiente forma:

Sub saludo()
 '' saludo Macro 
' Mi primera macro 
' Autor: Tu Nombre 
' Acceso directo: CTRL+s 
'Range("A1").Select 
ActiveCell.FormulaR1C1 = "Hola amiguitos" 
End Sub 

16.Que es lo que significa esto nos preguntaremos asombrados, a continuación se da una explicación de lo que ha hecho Excel:
• Sub y End Sub indican el inicio y el final del procedimiento de la macro saludo
 • Todo lo que aparece con un apóstrofe ´ indica que no se tomará en cuenta que es solo texto o comentarios y ese texto aparece en color verde.
• Range("A1").Select Indica que lo primero que hicimos al grabar la macro fue trasladarnos a la celda A1. La orden Range nos permite trasladarnos a una celda.
• ActiveCell.FormulaR1C1 = "Hola amiguitos" Esto indica que se escribirá en la celda en que se encuentra el valor de texto Hola amiguitos. Todo lo que aparece entre comillas siempre será un valor de texto. La orden ActiveCell.FormulaR1C1 nos permite escribir un valor en la celda activa. Para comprender alteramos el código dentro del editor de Visual Basic.
Sub saludo() ' 
saludo Macro 
' Mi primera macro
 ' Autor: Tu Nombre 
' Acceso directo: CTRL+s
'
Range("A1").Select 
ActiveCell.FormulaR1C1 = "Hola amiguitos" 
Range("B1").Select 
ActiveCell.FormulaR1C1 = "Bienvenidos al curso de Excel"
End Sub

17.Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará lo siguiente: En A1 escribirá Hola amiguitos En B1 escribirá Bienvenidos al curso de Excel Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará En A1 escribirá Hola amiguitos En B1 escribirá Bienvenidos al seminario de Excel.

Se visualiza:
Sub saludos() 
' saludo Macro 
' Mi primera macro 
' Autor: Patricia Acosta
 ' Acceso directo: CTRL+s 

Range("A1").Select ActiveCell.FormulaR1C1 = "Hola amiguitos"
'
 Range("B1").Select ActiveCell.FormulaR1C1 = "Bienvenidos al seminario de Excel" 
End 
End Sub

Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará: En A1 escribirá Hola amiguitos. En B1 escribirá Bienvenidos al seminario de Excel.

Para salir del editor de clic en el Menú Archivo y elija la opción Cerrar y volver a Microsoft Excel.

Si no desea salir por completo de clic en el botón Microsoft Excel que se encuentra activado en:
Cuando deseé volver al editor de clic en: la pestaña Programador


CÓDIGOS MÁS COMUNES 
Trasladarse a una Celda Range("A1").Select
Escribir en una Celda Activecell.FormulaR1C1="Paty Acosta"
Letra Negrita Selection.Font.Bold = True
Letra Cursiva Selection.Font.Italic = True
Letra Subrayada Selection.Font.Underline = xlUnderlineStyleSingle
Centrar Texto With Selection .HorizontalAlignment = xlCenter End With
Alinear a la izquierda With Selection .HorizontalAlignment = xlLeft End With
Alinear a la Derecha With Selection .HorizontalAlignment = xlRight End With

Tipo de Letra(Fuente) With Selection .Font .Name = "AGaramond" End With
Tamaño de Letra(Tamaño de Fuente) With Selection.Font .Size = 15 End With
Copiar Selection.Copy
Pegar ActiveSheet.Paste
Cortar Selection.Cut
Ordenar Ascendente Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Orden Descendente Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Buscar  Cells.Find(What:="Tu Nombre", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate
Insertar Fila Selection.EntireRow.Insert
Eliminar Fila Selection.EntireRow.Delete
Insertar Columna Selection.EntireColumn.Insert
Eliminar Columna Selection.EntireColumn.Delete
Abrir un Libro Workbooks.Open Filename:="C:\documentos\miarchivo.xls"
Grabar un Libro ActiveWorkbook.SaveAs Filename:="C:\Mis documentos\tauro.xls", FileFormat _ :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ False, CreateBackup:=False
CUADRO DE CONTROL – CONTROLES ACTIVEX Una de las opciones más interesantes que tiene el Excel es la de utilizar los “cuadros de control”. Los cuadros de control se usan para crear verdaderos programas en Excel y pueden ser de mucha utilidad. Esta herramienta está ubicada en: En Excel 2007 se encuentra el grupo Controles de la pestaña Programador Este grupo de Controles cuenta con tres opciones muy importantes como:
1. Modo diseño: permitirá trabajar en el diseño de los controles de ActiveX 2. Propiedades: permiten activar la propiedad de cada control 3. Ver código: permite agregar código a cada control. Para iniciar cree las hojas: Menú, Ventas y Compras Seleccione la hoja Menú para allí crear dos botones. Para trabajar con estos controles en necesario Activar el modo de diseño y dar clic en Insertar, seleccione el Botón de comando.
Esta vez haremos un botón que cuando se presione pase a otra hoja del Excel. Por ejemplo se puede hacer un menú con varios botones que al presionarlos pasen a las distintas opciones. Comencemos... En la hoja Menú cree dos “botones de comando”.
Seleccione el primer botón y de un clic derecho en la opción y muestre las propiedades. Cambie la Propiedad “Caption” por: “Ventas” En Name: btnventas
Seleccione el segundo botón y muestre las propiedades
Cambie la Propiedad “Caption” por: “Compras” En Name: btncompras Si realizó bien estos pasos Ud. Debería ver lo siguiente:
Si desea colocar iconos en los botones seleccione la propiedad Picture e inserte una imagen de extensión .ico.
Para que visualice el texto cambie la posición PicturePosition a: 5 Seleccione el primer botón y haga clic en ver código En esta parte se abrirá el Editor de Visual Basic y debe escribir lo siguiente: Hoja2.Activate
Cierre el editor de Visual Basic (nota: cada vez que cierre el editor de Visual Basic, hágalo del cuadro de cerrar “X” que está mas arriba, porque puede confundirse y cerrar la ventana de editar código, no se preocupe que no está cerrando Excel.) Seleccione el segundo botón y haga clic en ver código Escriba: Hoja3.activate Salga del modo de diseño y navegue con los botones que programó. Más adelante utilizaremos estos botones para cargar formularios desde VBA en Excel. O añada el código de las macros que grabó con la grabadora.

CREANDO FORMULARIOS Y PROGRAMÁNDOLOS Ahora aprenderemos a dominar lo máximo de Excel que es crear formularios y programarlos, bueno un formulario es una ventana que se programa por medio de controles y estos controles responden a sucesos que nosotros programamos. Todo esto se encuentra dentro de Visual Basic. A continuación Muestro como crear un formulario y como programarlo:
1. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic.
2. Activa las siguientes opciones:
• De clic en el Menú Ver y elija la opción Explorador de Proyectos
• De clic en el Menú ver y elija la opción Ventana Propiedades
3. Del Menú Insertar elija la Opción UserForm.

Esto inserta el Formulario que programaremos con controles. En el Explorador de Proyecto se observara que se inserto el UserForm.

También cuando de clic en el Formulario USERFORM1 se debe de activar el Cuadro de Herramientas, si no se activa de clic en el Menú Ver y elija la opción Cuadro de Herramientas.

4. Elija del Cuadro de Herramientas el Control Etiqueta el que tiene la A y Arrastre dibujando en el Formulario USERFORM1 la etiqueta. Quedara el nombre Label1, después de un clic en la etiqueta dibujada y podrá modificar el nombre de adentro y pondremos ahí Nombre. Si por error da doble clic en la etiqueta y lo manda a la pantalla de programación de la etiqueta, solo de doble clic en UserForm1 que se encuentra en el

5. Elija del Cuadro de Herramientas el control Cuadro de Texto el que tiene ab y arrastre dibujando en el formulario USERFORM1 el cuadro de texto a un lado de la etiqueta que dice Nombre. El cuadro de texto debe de estar vacío y su nombre será Textbox1, el nombre solo aparecerá en el control.

6. Haga los dos pasos anteriores igualmente poniendo Dirección en la Label2 y Teléfono en la Label3 y también dibújelos su Textbox. Esto quedara así después de haberlo hecho.

Si tiene algún problema al dibujar las etiquetas o los cuadros de texto, solo cámbiele el nombre a la etiqueta o el cuadro de texto en la Ventana Propiedades la opción se llama (Name). El Error que marque puede ser Nombre Ambiguo, pero si le cambia el Nombre al control se quitara el error. Puede ponerle cualquier nombre en lugar de Label1.

Los controles como las Etiquetas y Cuadros de Textos pueden modificarse algunas opciones en la Ventana Propiedades Para hacer esto es necesario tener conocimiento sobre las propiedades de los controles. No altere las propiedades si no las conoce.

7. Elija del Cuadro de Herramientas el control Botón de Comando y Arrastre dibujando en el Formulario USERFORM1 el Botón, después de un clic en el nombre del Botón dibujado y podrá modificar el nombre y pondremos ahí Insertar. Si por error da doble clic en la Botón y lo manda a la pantalla de programación de la etiqueta, solo de doble clic en UserForm1 que se encuentra en el Explorador de

Proyecto. Así quedara el Formulario formado por los controles:

8. Ahora de doble clic sobre el control Textbox1 para programarlo y después inserte el siguiente código:

Private Sub TextBox1_Change() Range("A9").Select 
ActiveCell.FormulaR1C1 = TextBox1 
End Sub

Esto indica que se valla a A9 y escriba lo que hay en el Textbox1 Nota.-Lo que esta en azul lo genera Excel automáticamente, usted solo escribirá lo que esta en Negrita. Para volver al Formulario y programar el siguiente Textbox de doble clic en UserForm1 que se encuentra en el Explorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo Explorador de Proyecto

9. Ahora de doble clic sobre el control Textbox2 para programarlo y después inserte el siguiente código: Private Sub TextBox2_Change() Range("B9").Select ActiveCell.FormulaR1C1 = TextBox2 End Sub Esto indica que se valla a B9 y escriba lo que hay en el Textbox2. Para volver al Formulario y programar el siguiente Textbox de doble clic en UserForm1 que se encuentra en el Explorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo Explorador de Proyecto.

10. Ahora de doble clic sobre el control Textbox3 para programarlo y después inserte el siguiente código: Private Sub TextBox3_Change() Range("C9").Select ActiveCell.FormulaR1C1 = TextBox2
End Sub
Esto indica que se valla a C9 y escriba lo que hay en el Textbox3 Para volver al Formulario y programar el Botón de Comando Insertar de doble clic en UserForm1 que se encuentra en el Explorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo Explorador de Proyecto.

11. Ahora de doble clic sobre el control Botón de Comando para programarlo y después inserte el siguiente código:
Private Sub CommandButton1_Click()
 ‘inserta un renglón Selection.EntireRow.Insert 
‘Empty Limpia Los Textbox 
TextBox1 = Empty 
TextBox2 = Empty 
TextBox3 = Empty 
‘Textbox1.SetFocus Envía el cursor al Textbox1 para volver a capturar los datos
TextBox1.SetFocus

Nota.-El comando Rem es empleado para poner comentarios dentro de la programación, el comando Empty es empleado para vaciar los Textbox. 12. Ahora presione el botón Ejecutar Userform que se encuentra en la barra de herramientas o simplemente la tecla de función F5. Se activará el Userform1 y todo lo que escriba en los Textbox se escribirá en Excel y cuando presione el botón Insertar, se inserta un renglón y se vaciaran los Textbox y después se mostrara el cursor en el Textbox1.

TRABAJANDO CON FORMULAS Es de suma importancia saber aplicar Formulas en Macros de Excel, ya que la mayoría de las hojas de cálculos las involucran, por ejemplo los Inventarios, las Nominas o cualquier otro tipo de hoja las llevan, es por eso que en la siguiente Fase se muestra como manejar Formulas en Macros de Excel. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic. Activa las siguientes opciones: • De clic en el Menú Ver y elija la opción Explorador de Proyectos • De clic en el Menú ver y elija la opción Ventana Propiedades Del Menú Insertar elija la Opción UserForm. Esto inserta el Formulario que programaremos con controles. En el Explorador de Proyecto se observará que se inserto el UserForm. Ahora crearas un formulario con el siguiente aspecto:

El formulario tendrá:
• Tres etiquetas
• Tres Textbox
• Un Botón de Comando Los datos que se preguntaran serán Nombre y Edad, los Días Vividos se generarán automáticamente cuando insertes la edad. A continuación se muestra como se deben de programar estos Controles
Programación de los Controles:
 Private Sub CommandButton1_Click() 
Selection.EntireRow.Insert 
TextBox1 = Empty 
TextBox2 = Empty 
TextBox3 = Empty TextBox1.SetFocus 
End Sub 
Private Sub TextBox1_Change() 
Range("A9").Select 
ActiveCell.FormulaR1C1 = TextBox1 
End Sub 
Private Sub TextBox2_Change() 
Range("B9").Select
ActiveCell.FormulaR1C1 = TextBox2 
‘aquí se crea la Fórmula TextBox3 = Val(TextBox2) * 365
‘El Textbox3 guardara el total de la multiplicación del Textbox2 por 365
‘El Comando Val permite convertir un valor de Texto a un Valor Numérico
‘Esto se debe a que los Textbox no son Numéricos y debemos de Convertirlos
End Sub 
Private Sub TextBox3_Change()
Range("C9").Select ActiveCell.FormulaR1C1 = TextBox3 End Sub

Continuará en la parte II ..................


No hay comentarios.:

Publicar un comentario