Sunteți pe pagina 1din 8

Ejemplos de macros

En esta pgina iremos insertando macros y cdigos que pueden servirle de ayuda. Macro para solicitar confirmacin de salir de Excel. macro que solicita al usuario que confirme salir de Excel Private Sub salir() If msgbox(Desea salir de Excel?,vbQuestion+ vbYesNo)=vbYes Then Application.quit End If End Sub Macro para guardar archivo seleccionando ubicacin Sub guardar_archivo() Dim stArchivo stArchivo = Application.GetOpenFilename(Hoja de Excel , *.xls*, _ , Seleccione archivo ) End Sub Macro para guardar archivos en otro formato Sub guardar_archivo_otro() con esta macro guardamos el archivo con la fecha y hora actual y formato csv Dim nombre, nombrearch, hoja, ruta nombre = Format(Now, dd-mm-yy hh.mm.ss) ruta = ActiveWorkbook.Path nombrearch = ActiveWorkbook.Name hoja = ActiveSheet.Name ActiveWorkbook.SaveAs Filename:=ruta & \ & hoja & nombre & .csv, FileFormat:=xlCSV ActiveSheet.SaveAs ruta & \ & nombrearch & nombre & .xlsm End Sub Copiar rango de una hoja a otra Si queremos que se quiera copiar los rangos de la hoja activa de una hoja a otra ejecutariamos la macro siguiente: Option Explicit Dim f, c Public Sub CopiarRango() ActiveCell.CurrentRegion.Select f = ActiveCell.Row c = ActiveCell.Column Selection.Copy Sheets(Hoja2).Activate Cells(f, c).Activate ActiveSheet.Paste End Sub Cerrar libro Excel (guardar cambios)

ActiveWorkbook.Close ActiveWorkbook.Close Savechanges:=True ActiveWorkbook.Close(True) Cerrar libro Excel (sin guardar cambios) ActiveWorkbook.Close(False) ActiveWorkbook.Close Savechanges:=False Cerrar libro Excel (variable, sin guardar cambios) Application.DisplayAlerts = False Windows(Libro_mayor).Close Application.DisplayAlerts = True Abrir libro Excel (ruta fija) Workbooks.Open FileName:=C:\Trabajo\Informe.xls Desplazarnos a la ltima hoja del libro Sub ultima_hoja() Sheets(Sheets.Count).Select End Sub Desplazarnos a la primera hoja del libro Sub primera_hoja() Sheets(1).Select End Sub Copiar el contenido seleccionado en otra hoja Sub CopiaColumnas() Dim mirango As Range Dim col As Range Dim NuevaHoja As Worksheet Dim i As Integer Set mirango = Selection Worksheets.Add i=0 For Each col In mirango.Columns col.Copy ActiveSheet.Range(A1).Offset(, i) i=i+1 Next col End Sub Macro para crear ndices de hojas en libros Private Sub Worksheet_Activate() Dim cHoja As Worksheet Dim L As Long L=1 With Me .Columns(1).ClearContents

.Cells(1, 1) = INDICE .Cells(1, 1).Name = Indice End With For Each cHoja In Worksheets If cHoja.Name <> Me.Name Then L=L+1 With cHoja .Range(A1).Name = Inicio & cHoja.Index .Hyperlinks.Add Anchor:=.Range(A1), Address:= , SubAddress:=Indice, TextToDisplay:=Volver al ndice End With Me.Hyperlinks.Add Anchor:=Me.Cells(L, 1), Address:= , SubAddress:=Inicio & cHoja.Index, TextToDisplay:=cHoja.Name End If Next cHoja End Sub Macro para imprimir hoja activa con datos Sub macro imprimir_ha() Range(A1) = Lo que sea Imprimimos la hoja de excel con una sola copia ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub Buscar la ltima fila vaca Sub ultimafila() variable donde almacenamos el nmero de fila Dim ultima As Long vamos subiendo por la columna A desde la ltima fila ultima = Range(A65536).End(xlUp).Row le sumamos una porque queremos la 1 fila vaca ultima = ultima + 1 seleccionamos si queremos otra columna cambiar el nmero Cells(ultima, 1).Select End Sub Encontrar ltima fila (en columna especificada) Dim intUltimaFila As Range If WorksheetFunction.CountA(Columns(1)) > 0 Then Set intUltimaFila = Range(65536).End(xlUp) MsgBox intUltimaFila.Address End If Suprimir filas vacas intLastRow = Columns(A:A).Range(A65536).End(xlUp).Row For r = intLastRow To 1 Step -1

If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete Next r Suprimir filas vacas Dim intNumDeFilas As Long Selection.SpecialCells(xlCellTypeLastCell).Select intNumDeFilas = Selection.Row For i = 1 To intNumDeFilas If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete End If Next Suprimir filas vacas intUltimaFila = ActiveSheet.UsedRange.Row 1 + ActiveSheet.UsedRange.Rows.Count For r = intUltimaFila To 1 Step -1 If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete Next r Suprimir filas por condicin Dim rngString As Range Do Set rngString = Cells.Find(Aglis, MatchCase:=False, _ LookAt:=xlPart, LookIn:=xlValues) If Not rngString Is Nothing Then rngString.EntireRow.Delete End If Loop Until rngString Is Nothing Suprimir filas vacas por dos condicines X, Y For i = intUltimaFila To 1 Step -1 Let strTest= Application.Cells(i, 2) If strTest <> X And strTest <> Y Then Rows(i).Delete Next i Mtodos abreviados de teclado en Excel

Lmites de Excel

Nmero total de columnas disponibles en Excel.



Lmite Excel 2003: 256 (2^8) Lmite Excel 2007: 16.384 (2^14)

Nmero total de filas disponibles en Excel.


Lmite Excel 2003: 65.536 (2^16) Lmite Excel 2007: el 1.048.576 (2^20)

Las celdas por hoja es la multiplicacin de las filas por las columnas. Un libro puede tener un nmero variable de hojas, segn nuestras necesidades. El lmite estaba en 256 y est ahora en 1024.

Nmero total de hojas disponibles en Excel.



Lmite Excel 2003: 256 (2^8) Lmite Excel 2007: 1.024 (2^10)

Cantidad total de memoria del PC que Excel puede utilizar.


Lmite Excel 2003: 1GB. Lmite Excel 2007: 2 GB.

Nmero de colores nicos permitido en un solo libro de trabajo.


Lmite Excel 2003: 56 (color puesto en un ndice) Lmite Excel 2007: 4.294.967.296 (casi 4300 millones, color 32-bit)

Nmero de condiciones condicionales del formato en una celda.


Lmite Excel 2003: 3 condiciones Lmite Excel 2007: Limitado por memoria disponible

Nmero de niveles para ordenar en una lista o una tabla.


Lmite Excel 2003: 3 Lmite Excel 2007: 64

Nmero de datos mostrados en el Autofiltro.


Lmite Excel 2003: 1.000 Lmite Excel 2007: 10.000

Nmero total de caracteres que puede exhibir una celda.


Lmite Excel 2003: 1.024 (cuando se ajusta a formato el texto) Lmite Excel 2007: 32.768 o tanto como quepa en la celda (sin importar el formato)

Nmero de caracteres por celda que el Excel puede imprimir.


Lmite Excel 2003: 1.024 Lmite Excel 2007: 32.768

Nmero total de los estilos nicos de la celda en un libro de trabajo (combinaciones de todo el formato de la celda).

Lmite Excel 2003: 4000 Lmite Excel 2007: 65.536

Longitud mxima de frmulas (en caracteres).


Lmite Excel 2003: carcteres 1.024

Lmite Excel 2007: carcteres 8.192

Nmero de niveles de anidacin que Excel permite en frmulas.


Lmite Excel 2003: 7 Lmite Excel 2007: 64

Nmero mximo de discusiones a una funcin.


Lmite Excel 2003: 30 Lmite Excel 2007: 255

Nmero mximo de artculos que encuentra el comando buscar todos.


Lmite Excel 2003: ~64k (65472) Lmite Excel 2007: ~2 mil millones

Nmero de filas permitidos en una tabla dinmica.


Lmite Excel 2003: 65.536 Lmite Excel 2007: 1.048.576

Nmero de columnas permitidoen una tabla dinmica.


Lmite Excel 2003: 255 Lmite Excel 2007: 16.384

Nmero mximo de artculos nicos dentro de un solo campo de una tabla dinmica.

Lmite Excel 2003: 32.768 Lmite Excel 2007: 1.048.576

Longitud del nombre de MDX para un artculo de una tabla dinmica; tambin la longitud de la secuencia para una tabla dinmica emparentada.

Lmite Excel 2003: 255 caracteres Lmite Excel 2007: 32.768

Longitud a la cual se truncan los campos que etiquetan una tabla dinmica; esto tambin incluye limitaciones de la longitud del subttulo.

Lmite Excel 2003: 255 Lmite Excel 2007: 32.768

El nmero de campos (segn lo visto en la lista del campo) que una sola tabla dinmica puede tener.

Lmite Excel 2003: 255 Lmite Excel 2007: 16.384

Nmero de celdas que pueden depender de un solo rango antes que Excel necesite hacer clculos completos en vez de clculos parciales (porque no puede seguir las dependencias requeridas para hacer clculos parciales).

Lmite Excel 2003: 8.192 Lmite Excel 2007: Limitado por memoria disponible

El nmero de rangos diversos en una hoja que pueden tener dependencias antes de que Excel necesite hacer clculos completos en vez de clculos parciales (porque no puede seguir las dependencias requeridas para hacer clculos parciales).

Lmite Excel 2003: 65.536 Lmite Excel 2007: Limitado por memoria disponible

Nmero de frmulas en conjunto en una hoja de trabajo que pueden referir a otra hoja de trabajo.

Lmite Excel 2003: 65.536 Lmite Excel 2007: Limitado por memoria disponible

Nmero de categoras que las funciones personalizadas pueden encapsular.



Lmite Excel 2003: 32 Lmite Excel 2007: 255

Nmero de caracteres que se pueden actualizar en una referencia externa que no pertenece al libro de trabajo.

Lmite Excel 2003: 255 Lmite Excel 2007: 32.768

Nmero de filas de una o varias columnas que se pueden referir en una frmula matricial (array formula).

Lmite Excel 2003: 65.335 Lmite Excel 2007: No hay lmites.

Nmero de caracteres que se pueden almacenar y exhibir en una celda ajustada a formato de texto.

Lmite Excel 2003: 255 Lmite Excel 2007: 32.768

Macro que elimina las barras de desplazamiento Sub elimina_barra() With ActiveWindow .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With End Sub Macro que protege el libro y la hoja Sub proteger() ActiveWorkbook.Protect Password:=1234 Sheets(Hoja1).Protect Password:=1234 End Sub Calculo del NIF

Esta funcin calcula el NIF (Nmero de Identificacin Fiscal). Function nif(dni As Long) As String nif = Mid(TRWAGMYFPDXBNJZSQVHLCKE, (dni Mod 23) + 1, 1) End Function

S-ar putea să vă placă și