Está en la página 1de 6

Crear una barra de progreso en Excel

Un ejemplo de una macro VBA de como crear una barra de progreso (progress bar) para
incluir en nuestras aplicaciones y plantillas Excel.

Crear una barra de progreso en Excel VBA.

De esta forma podemos añadir un medidor de progreso gráfico a la barra de estado de


Excel.

El código
Option Explicit

Sub BarraDeProgreso()

Dim R As Integer
Dim MT As Double
For R = 1 To 180
MT = Timer
Do
Loop While Timer - MT < 0.05
Application.StatusBar = "Progress: " & R & " de 180: " & _
Format(R / 180, "Percent") & " --- " & "Cumplimiento"
DoEvents
Next R
Application.StatusBar = False

End Sub
Ejemplos de macros
En esta página iremos insertando macros y códigos que pueden servirle de ayuda.

Macro para solicitar confirmación 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 ubicación

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 vacía

Sub ultimafila()
‘variable donde almacenamos el número 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 vacía


ultima = ultima + 1

‘seleccionamos si queremos otra columna cambiar el número


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 vacías

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 vacías

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 vacías

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 condición

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 vacías por dos condiciónes 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

También podría gustarte