Está en la página 1de 8

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

También podría gustarte