Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/09/2007, 21:30
Avatar de Pablus00
Pablus00
 
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Re: FAQ`s Ofimatica

Tutorial: Cómo mostrar una barra de progreso con un formulario de usuario en Excel

Si tiene una macro de Microsoft Visual Basic para Aplicaciones que toma mucho tiempo terminando, quizás desea dar una indicación que la macro progresa correctamente al usuario. En este artículo se describe cómo crear una barra de progreso con un formulario de usuario en Microsoft Excel.

Más información

Microsoft proporciona ejemplos de la programación sólo para ilustración sin garantía que se expresa o implícito. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado Este artículo presupone que está familiarizado por usted con el lenguaje de programación que se muestra y las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento determinado. Sin embargo, ellos no modificarán estos ejemplos para proporcionar que agregó funcionalidad o construir procedimientos para cumplir sus necesidades específicas.


Cree el formulario de usuario

En el ejemplo siguiente, una subrutina de Visual Basic rellena rango de celdas grandes con un número aleatorio. El indicador le muestra que la macro se ejecuta correctamente.

1.Abra un libro nuevo en Excel.

2.En Microsoft Office Excel 2003 y versiones anteriores de Excel, haga clic en Herramientas, elija Macro y a continuación, haga clic en Editor de Visual Basic.

En Microsoft Office Excel 2007, haga clic en Visual Basic en el grupo Código en la ficha Programador.

Nota Para mostrar la ficha Programador en la Cinta, siga estos pasos:
a. Start Excel 2007 hace clic en el Microsoft Office Button y a continuación, hace clic en Opciones de Excel.
b. En el cuadro de diálogo Opciones de Excel, haga clic en Popular y a continuación, haga clic para activar la casilla de verificación Show Developer tab in the Ribbon.

3.En el menú <B>Insertar</B>, haga clic en <B>UserForm</B>
4.Dibuje un control Label en el formulario de usuario.
5.Cambie las propiedades siguientes del control Label en los valores siguientes:

Property Value
--------------------------------------------
Caption Now updating. Please wait...

Nota Si la ventana Propiedades no es visible, haga clic en Ventana Propiedades en el menú Ver.

6.Dibuje un control Frame en el formulario de usuario.
7.Cambie las propiedades siguientes del control Frame en los valores siguientes:

Property Value
-----------------------------
Name FrameProgress


8.Dibuje un control Label en el control Frame.
9.Cambie las propiedades siguientes del control Label en los valores siguientes:

Property Value
-------------------------------------
Name LabelProgress
BackColor &H000000FF&
SpecialEffect fmSpecialEffectRaised



Escriba el código de macro

1.Haga doble clic en el formulario de usuario para abrir la ventana Código para el formulario de usuario.
2.En el módulo, escriba el código siguiente para el evento UserForm Activate:

Private Sub UserForm_Activate()
' Set the width of the progress bar to 0.
UserForm1.LabelProgress.Width = 0

' Call the main subroutine.
Call Main
End Sub




3.En el menú Insertar, haga clic en Módulo.
4.En la ventana Código para el módulo, escriba el código siguiente:

Sub ShowUserForm()
UserForm1.Show
End Sub

Sub Main()
Dim Counter As Integer
Dim RowMax As Integer, ColMax As Integer
Dim r As Integer, c As Integer
Dim PctDone As Single

Application.ScreenUpdating = False
' Initialize variables.
Counter = 1
RowMax = 100
ColMax = 25

' Loop through cells.
For r = 1 To RowMax
For c = 1 To ColMax
'Put a random number in a cell
Cells(r, c) = Int(Rnd * 1000)
Counter = Counter + 1
Next c

' Update the percentage completed.
PctDone = Counter / (RowMax * ColMax)

' Call subroutine that updates the progress bar.
UpdateProgressBar PctDone
Next r
' The task is finished, so unload the UserForm.
Unload UserForm1
End Sub

Sub UpdateProgressBar(PctDone As Single)
With UserForm1

' Update the Caption property of the Frame control.
.FrameProgress.Caption = Format(PctDone, "0%")

' Widen the Label control.
.LabelProgress.Width = PctDone * _
(.FrameProgress.Width - 10)
End With

' The DoEvents allows the UserForm to update.
DoEvents
End Sub


5.Vuelva a Excel.
6.En Excel 2003 y versiones anteriores de Excel, elija Macro en el menú Herramientas y a continuación, haga clic en Macros.

En Excel 2007, haga clic en Macros en el grupo Código en la ficha Programador.

7.En el cuadro de diálogo Macro, haga clic para seleccionar ShowUserForm y a continuación, haga clic en Ejecutar.
Un cuadro de diálogo que tiene una barra de progreso roja aparece. La barra de progreso aumenta como la subrutina Main rellena las celdas de la hoja de cálculo.

La subrutina ShowUserForm muestra el formulario de usuario. El procedimiento que se asocia al evento Activate del formulario de usuario llama a la subrutina Main. La subrutina Main rellena celdas con números aleatorios. La subrutina además llama a la subrutina UpdateProgressBar que actualiza el control Label del formulario de usuario.

http://support.microsoft.com/kb/211736/es
__________________
-- Nunca te des por vencido, aún vencido -- Web

Última edición por Pablus00; 25/09/2007 a las 21:37