insertando macros
DESCRIPTION
MACROSTRANSCRIPT
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 ExcelPrivate Sub salir()If msgbox(Desea salir de Excel?,vbQuestion+ vbYesNo)=vbYes Then Application.quit End IfEnd SubMacro para guardar archivo seleccionando ubicacinSub guardar_archivo()Dim stArchivostArchivo = Application.GetOpenFilename(Hoja de Excel , *.xls*, _ , Seleccione archivo )End SubMacro para guardar archivos en otro formatoSub guardar_archivo_otro()con esta macro guardamos el archivo con la fecha y hora actual y formato csvDim nombre, nombrearch, hoja, rutanombre = Format(Now, dd-mm-yyhh.mm.ss)ruta =ActiveWorkbook.Pathnombrearch =ActiveWorkbook.Namehoja =ActiveSheet.NameActiveWorkbook.SaveAs Filename:=ruta & \ & hoja & nombre & .csv, FileFormat:=xlCSVActiveSheet.SaveAs ruta & \ & nombrearch & nombre & .xlsmEnd SubCopiar rango de una hoja a otraSi queremos que se quiera copiar los rangos de la hoja activa de una hoja a otra ejecutariamos la macro siguiente:
Option ExplicitDim f, cPublic Sub CopiarRango()ActiveCell.CurrentRegion.Selectf =ActiveCell.Rowc = ActiveCell.ColumnSelection.CopySheets(Hoja2).ActivateCells(f, c).ActivateActiveSheet.PasteEnd SubCerrar libro Excel (guardar cambios)ActiveWorkbook.CloseActiveWorkbook.Close Savechanges:=TrueActiveWorkbook.Close(True)Cerrar libro Excel (sin guardar cambios)ActiveWorkbook.Close(False)ActiveWorkbook.Close Savechanges:=FalseCerrar libro Excel (variable, sin guardar cambios)Application.DisplayAlerts = FalseWindows(Libro_mayor).CloseApplication.DisplayAlerts = TrueAbrir libro Excel (ruta fija)Workbooks.OpenFileName:=C:\Trabajo\Informe.xlsDesplazarnos a la ltima hoja del libroSub ultima_hoja()Sheets(Sheets.Count).SelectEnd SubDesplazarnos a la primera hoja del libroSub primera_hoja()Sheets(1).SelectEnd SubCopiar el contenido seleccionado en otra hojaSub CopiaColumnas()Dim mirango As RangeDim col As RangeDim NuevaHoja As WorksheetDim i As IntegerSet mirango = SelectionWorksheets.Addi = 0For Each col In mirango.Columnscol.CopyActiveSheet.Range(A1).Offset(, i)i = i + 1Next colEnd SubMacro para crear ndices de hojas en librosPrivate Sub Worksheet_Activate()Dim cHoja As WorksheetDim L As LongL = 1With Me.Columns(1).ClearContents.Cells(1, 1) = INDICE.Cells(1, 1).Name = IndiceEnd WithFor Each cHoja In WorksheetsIfcHoja.NameMe.NameThenL = L + 1With cHoja.Range(A1).Name = Inicio &cHoja.Index.Hyperlinks.AddAnchor:=.Range(A1), Address:= , SubAddress:=Indice, TextToDisplay:=Volver al ndiceEnd WithMe.Hyperlinks.AddAnchor:=Me.Cells(L, 1), Address:= , SubAddress:=Inicio &cHoja.Index, TextToDisplay:=cHoja.NameEnd IfNext cHojaEnd SubMacro para imprimir hoja activa con datos
Sub macro imprimir_ha()Range(A1) = Lo que seaImprimimos la hoja de excel con una sola copiaActiveWindow.SelectedSheets.PrintOut Copies:=1End SubBuscar la ltima fila vacaSub ultimafila()variable donde almacenamos el nmero de filaDim ultima As Longvamos subiendo por la columna A desde la ltima filaultima = Range(A65536).End(xlUp).Rowle sumamos una porque queremos la 1 fila vacaultima = ultima + 1seleccionamos si queremos otra columna cambiar el nmeroCells(ultima, 1).SelectEnd SubEncontrar ltima fila (en columna especificada)Dim intUltimaFila As RangeIf WorksheetFunction.CountA(Columns(1)) > 0 ThenSet intUltimaFila = Range(65536).End(xlUp)MsgBox intUltimaFila.AddressEnd IfSuprimir filas vacasintLastRow = Columns(A:A).Range(A65536).End(xlUp).RowFor r = intLastRow To 1 Step -1If Application.CountA(Rows(r)) = 0 Then Rows(r).DeleteNext rSuprimir filas vacasDim intNumDeFilas As LongSelection.SpecialCells(xlCellTypeLastCell).SelectintNumDeFilas =Selection.RowFor i = 1 To intNumDeFilasIf Application.WorksheetFunction.CountA(Rows(i)) = 0 ThenRows(i).DeleteEnd IfNextSuprimir filas vacasintUltimaFila =ActiveSheet.UsedRange.Row 1 +ActiveSheet.UsedRange.Rows.CountFor r = intUltimaFila To 1 Step -1If Application.CountA(Rows(r)) = 0 Then Rows(r).DeleteNext rSuprimir filas por condicinDim rngString As RangeDoSet rngString =Cells.Find(Aglis, MatchCase:=False, _LookAt:=xlPart, LookIn:=xlValues)If Not rngString Is Nothing ThenrngString.EntireRow.DeleteEnd IfLoop Until rngString Is NothingSuprimir filas vacas por dos condicines X, YFor i = intUltimaFila To 1 Step -1Let strTest=Application.Cells(i, 2)If strTest X And strTest Y Then Rows(i).DeleteNext iMtodos abreviados de teclado en Excel
Lmites de ExcelNmero 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 Excelpuede 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 Excelpuede 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 (encaracteres). Lmite Excel 2003: carcteres 1.024
Lmite Excel 2007: carcteres 8.192
Nmero de niveles de anidacin que Excelpermite 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 Excelnecesite 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 Excelnecesite 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 desplazamientoSubelimina_barra()WithActiveWindow .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End WithEnd SubMacro que protege el libro y la hojaSubproteger() ActiveWorkbook.Protect Password:=1234 Sheets(Hoja1).Protect Password:=1234End SubCalculo del NIFEsta funcin calcula el NIF (Nmero de Identificacin Fiscal).
Functionnif(dniAs Long)As String nif = Mid(TRWAGMYFPDXBNJZSQVHLCKE, (dniMod23) + 1, 1)End Function