02 MacrosVBAExcelAvanzado_EAA de 11

14

Click here to load reader

description

Creado por Enrique Alfaro de SENATI Trujillo

Transcript of 02 MacrosVBAExcelAvanzado_EAA de 11

Page 1: 02 MacrosVBAExcelAvanzado_EAA de 11

Excel Avanzado con VBA (02)Ing. Enrique Alfaro

Page 2: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 2

MOVER A UN EXTREMO DE UNA LISTADE LA SELECCIÓN ACTUAL DIRIGIRSE AL FINAL POR CUALQUIERA DE LOS LADOS DISPONIBLES

IR HACIA LA DERECHA (Ctrl+Dcha.) Selection.End(xlToRight).Select

IR HACIA LA IZQUIERDA (Ctrl+izqda.) Selection.End(xlToLeft).Select

IR HACIA ABAJO (Ctrl+Abajo.) Selection.End(xlDown).Select

IR HACIA ARRIBA (Ctrl+Arriba.) Selection.End(xlUp).Select

Page 3: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 3

ELIMINACION DE INFORMACION DE CELDAS

ELIMINAR CONTENIDO DE CELDAS (Supr)Selection.ClearContents

ELIMINAR EL FORMATO DE CELDASSelection.ClearFormats

ELIMINAR TODO DE CELDASSelection.Clear

ELIMINAR CONTENIDO DE 9 CELDAS: 3 A LA DERECHA Y 3 ABAJO A PARTIR DE LA ACTIVA

ActiveCell.Range("A1:C3").ClearContents

Page 4: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 4

ELIMINACION DE FILAS O COLUMNASELIMINAR UNA CELDA DE LA CELDA ACTIVA

DESPLAZANDO LAS CELDAS HACIA ARRIBAActiveCell.Delete Shift:=xlUp

ELIMINAR UNA COLUM. DE LA CELDA ACTIVA DESPLAZANDO LAS COLUMNAS HACIA LA DERECHA

ActiveCell.Delete Shift:=xlToLeft

ELIMINAR UNA FILA ENTERAActiveCell.Rows(“1:1”).EntireRow.SelectSelection.Delete Shift:=xlUpActiveCell.Select ‘No necesario

ELIMINAR UNA COLUMNA ENTERAActiveCell.Columns(“A:A”).EntireColumn.SelectSelection.Delete Shift:=xlToLeft

Page 5: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 5

ELIMINACION DE FILAS O COLUMNAS

ELIMINAR 2 FILAS ARRIBA DE LA CELDA ACTIVA

ActiveCell.Offset(-2,0).Rows(“1:2”).EntireRow.Select

Selection.Delete Shift:=xlUp

ELIMINAR 3 COLUMNAS A LA DERECHA DE LA CELDA ACTIVA

ActiveCell.Offset(0,1).Columns(“A:C”).EntireColumn.Select

Selection.Delete Shift:=xlToLeft

Page 6: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 6

INSERCION DE FILAS / COLUMNAS

INSERTAR UNA FILA DEBAJO DE LA ACTIVA

Selection.Insert Shift:=xlDown

INSERTAR UNA COLUMNA A LA DERECHA DE LA ACTIVA

Selection.Insert Shift:=xlToRight

INSERTAR UNA COLUMNA ENTERA EN LA CELDA ACTIVA

ActiveCell.Columns("A:A").EntireColumn.Select Selection.Insert Shift:=xlToRight

Page 7: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 7

INSERCION DE FILAS / COLUMNAS

INSERTAR UNA COLUMNA ENTERA 2 COLUMNAS A LA DERECHA DE LA CELDA ACTIVA

ActiveCell.Offset(0, 2).Columns("A:A").EntireColumn.Select

Selection.Insert Shift:=xlToRight,

INSERTAR DOS COLUMNAS ENTERAS 3 COLUMNAS A LA DERECHA DE LA CELDA ACTIVA

ActiveCell.Offset(0, 3).Columns("A:C").EntireColumn.Select

Selection.Insert Shift:=xlToRight

Page 8: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 8

SUMAR AL FINAL DE UNA LISTA DE NUMEROSEj.: Partir ubicándose en una celda mas abajo

del último número de una lista de 5 números cualquiera dispuestos verticalmente.

ActiveCell.FormulaR1C1 = "=SUM(R[-4]C:R[-1]C)"

Ej: Partir ubicándose en una celda a la derecha del último número de una lista de 5 números cualquiera dispuestos horizontalmente:

ActiveCell.FormulaR1C1="=SUM(RC[-4]:RC[-1])"

Page 9: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 9

AJUSTAR COLUMNAS y FILASCAMBIAR EL ANCHO DE 5 COLUMNAS O 5 FILAS A LA VEZColumns("B:F"). ColumnWidth = 6Rows("6:10").RowHeight = 40

CAMBIAR EL ANCHO AUTOMATICO AJUSTABLE A LOS DATOS DE 5 COLUMNAS O 5 FILAS LA VEZ

Columns("B:F").EntireColumn.AutoFitRows("6:10").EntireRow.AutoFit

Page 10: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 10

RELLENAR FORMULASRELLENAR FORMULA CON FORMATOSelection.AutoFill Destination:=ActiveCell.Range("A1:C1"), Type:=xlFillDefault

RELLENAR FORMULA SOLO VALORESSelection.AutoFill Destination:=ActiveCell.Range("A1:C1"), Type:=xlFillValues

RELLENAR FORMULA SOLO FORMATOSSelection.AutoFill Destination:=ActiveCell.Range("A1:C1"), Type:=xlFillFormats

Notas: ActiveCell.Range("A1:C1") es un rango relativo a la celda activa e involucra las 3 celdas contiguas a la celda actual inclusive.Si deseas utilizar la primera forma puedes obviar la escritura de Type:=…

Page 11: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 11

EJERCICIO DE APLICACION

Crear 2 macros, una que borre todo y otra que cree una tabla en cualquier celda activada. Los números son aleatorios entre 0 y 10. Hallar sumatoria y formatear.

Sub Borrar() Cells.Select Selection.Clear Range("A1").Select End Sub

Page 12: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 12

EJERCICIO DE APLICACIÓN (1/3) Sub CrearTabla() 'Escribir los titulos enero…marzo ActiveCell.Value = "Enero" ActiveCell.Offset(0, 1). Select 'ActiveCell.Offset(0,

1).Range("A1").Select

ActiveCell.Value = "Febrero" ActiveCell.Offset(0, 1). Select ActiveCell.Value= "Marzo" 'Ubicarse en el primer titulo (ctrl+ izquierda) Selection.End(xlToLeft).Select 'Seleccionar las 9 celdas a partir de una celda abajo de la

activa ActiveCell.Offset(1, 0).Range("A1:C3").Select 'Imprimir numeros aleatorios entre 1 y 10 en la selección Selection.Value = "=RANDBETWEEN(1,10)" 'Ubicarse en el 1er titulo (Ctrl + arriba) Selection.End(xlUp).Select Continúa…

Page 13: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 13

EJERCICIO DE APLICACIÓN (2/3)

'Seleccionar todos los títulos Range(Selection,

Selection.End(xlToRight)).Select 'Aplicar color y negrita a los títulos

seleccionados Selection.Font.Color = RGB(255, 0, 50) Selection.Font.Bold = True 'Ir a la última celda inferior de la tabla Selection.End(xlDown).Select 'Seleccionar la celda inferior de la actual ActiveCell.Offset(1, 0).Select Sumar los valores superiores a la celda activa ActiveCell.value = "=SUM(R[-3]C:R[-1]C)"

Continúa…

…viene de la anterior

Page 14: 02 MacrosVBAExcelAvanzado_EAA de 11

12/04/2023Ing. Enrique Alfaro 14

EJERCICIO DE APLICACIÓN (3/3)

‘Copiar rellenando la fórmula en las 2 celdas de la derecha.

Selection.AutoFill Destination:=ActiveCell.Range("A1:C1")

ActiveCell.Range("A1:C1").Select 'Formatear negrita e itálica la selección actual de

fórmulas With Selection .Font.Bold = True .Font.Italic = True End With 'Formatear con borde continuo arriba de lo

seleccionado Selection.Borders(xlEdgeTop).LineStyle =

xlContinuous 'Ubicarse al comienzo de la tabla terminada Selection.End(xlUp).SelectEnd Sub

…viene de la anterior