martes, 15 de noviembre de 2016

MACROS EXCEL

¿QUE ES UN MACRO?

Es una serie de instrucciones que se almacenan para que se puedan ejecutar de manera secuencial mediante una sola llamada u orden de ejecución. esta compuesto por una serie por unas instrucciones mas sencillas. Esto permite la automatización de tareas repetitivas. Ademas es un procesadores de texto, bases de datos, hojas de cálculo, que también se obtienen secuencia de acciones dentro de la aplicación que el usuario activa pulsando una combinación específica de teclas.



USO DE COLORES EN EXCEL CON MACROS.
Para obtener un macro que contenga colores necesitamos saber el "código o la enumeración respectivas para la obtención de dichos colores" aquí nos muestran la enumeración de cada color.


MACRO DE CONTEO
Lo primero es personalizar el formato de la celda donde vamos a insertar el tiempo de la reunión. Para ello, damos clic derecho sobre la celda A2 y abrimos la ventana de Formato de celda:
En la pestaña Número seleccionamos la categoría Personalizada y en el espacio de Tipo agregamos el siguiente texto: h:mm:ss
Damos aceptar y ahora coloquemos un tiempo de 5 segundos de prueba:
Ahora debemos crear la macro, para ello aplicamos la combinación de teclas Alt + F11 para abrir el editor de visual Basic. En el panel de explorador de proyectos ubicamos el libro de trabajo e insertamos un Módulo:
Damos doble clic en el Módulo desde el explorador de proyectos y pegamos el siguiente código:
Sub ProgramaCuentaRegresiva()
Dim CuentaRegresiva As Date
CuentaRegresiva = Now + TimeValue("00:00:01")
Application.OnTime CuentaRegresiva, "ProgramaCuenta"
End Sub
Sub ProgramaCuenta()
Dim Cuenta As Range
Set Cuenta = [A2]
Cuenta.Value = Cuenta.Value - TimeSerial(0, 0, 1)
If Cuenta <= 0 Then
MsgBox "Terminó el Conteo", vbExclamation, "Cuenta Regresiva"
Exit Sub
End If
Call ProgramaCuentaRegresiva
End Sub
Ahora volvemos a la hoja Excel, insertamos un cuadro y asignamos la macro ProgramaCuenta (Clic derecho sobre el cuadro y seleccionamos Asignar Macro):
Ya está listo, ahora solo queda dar clic y al finalizar el conteo aparece el siguiente mensaje:


MACRO DE CICLO

Ejemplos del ciclo For...Next

El siguiente ciclo se repite 10 veces:

Sub Ciclos()
Dim i As Integer

    For i = 1 To 10
        Cells(i, 1).Value = i
    Next i
    
End Sub

Tabla resultante después de ejecutar la macro anterior:

vba ciclo for


Macro para calcular la raíz cuadrada, el cuadrado y el cubo de los 10 primeros números enteros

El siguiente ciclo se repite 10 veces:

Sub Ciclos2()
Dim i As Integer

    For i = 1 To 10
        Cells(i, 1).Value = i
        Cells(i, 2).Value = i ^ (1 / 2)
        Cells(i, 3).Value = i ^ 2
        Cells(i, 4).Value = i ^ 3
    Next i
    
End Sub

Tabla resultante después de ejecutar la macro:

vba ciclo For 02



La siguiente macro identifica y escribe el nombre de las hojas de trabajo del libro activo
  • Utiliza el objeto Sheets.Count (número de hojas del libro activo) para determinar el número de veces que se ejecutará el ciclo
  • Utiliza el objeto Sheets(i).Name para identificar el nombre de la iésima página del libro

Sub nombreHojasTrabajo()
Dim i As Long
Dim nHojas As Long
Dim nombreHoja As String
    
    nHojas = Sheets.Count  'número de hojas de trabajo en el libro activo
   
    For i = 1 To nHojas
        nombreHoja = Sheets(i).Name 'nombre de la hoja de trabajo
        Debug.Print nombreHoja    'escribe el nombre de la hoja en la ventana del depurador
    Next i
    
End Sub


Cambiar el incremento en el ciclo

La siguiente macro cambia de color el fondo de las filas pares de las primeras 4 columnas.
El número de veces que se repite depende de el número de filas que tenga el rango de datos.

Sub Ciclos4()
Dim i As Integer
Dim UltimaFila As Long

    'Detecta la última fila del rango de datos en la hoja activa
    UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row

    'El siguiente ciclo cambia de color el fondo de las filas pares
    'de las primeras 4 columnas
    
    For i = 2 To UltimaFila Step 2 'incremento de dos en dos 2, 4, 6, ...)
        Cells(i, 1).Resize(1, 4).Interior.ColorIndex = 36
    Next i
    
End Sub



Tabla de trabajo original

Tabla de calificaciones

Tabla resultante después de ejecutar la macro anterior.




Sub Ciclos5()
'Escribe el texto "Mayor que cero" a la derecha
'de la columna de trabajo
'
Dim UltimaFila As Integer
Dim ColumnaTrabajo
Dim i As Integer

    ColumnaTrabajo = 3

    'Detecta la última fila del rango de datos en la hoja activa
    UltimaFila = Cells(Rows.Count, ColumnaTrabajo).End(xlUp).Row
    
    For i = 1 To UltimaFila
    
        If Cells(i, ColumnaTrabajo).Value > 0 Then
            Cells(i, ColumnaTrabajo + 1).Value = "Mayor que cero"
        End If
        
    Next i
    
End Sub

Tabla de trabajo original:
vba ciclo For 03

Después de ejecutar la macro:

vba ciclo For 04


Ciclos dentro de ciclos

La siguiente macro utiliza ciclos anidados para para crear una tabla de multiplicar
  • la variable i controla el número de la fila
  • la variable j controla el número de la columna

Sub Ciclos()
Dim i As Integer
Dim j As Integer

    For i = 1 To 10  'control de filas
        For j = 1 To 5 'control de columnas
            Cells(i, j).Value = i * j   'en la intersección de la fila y se columna se efectúa la multiplicación
        Next j
    Next i
    
End Sub

Tabla resultante de multiplicar después de ejecutar la macro:

vba ciclo For 05

No hay comentarios:

Publicar un comentario