Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

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

Ha finalizado el soporte técnico para Office 2003

Microsoft puso fin al soporte técnico para Office 2003 el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 211736
Para obtener una versión de Microsoft Excel 97 de este artículo, consulte 170782.

Idea enviada por el artículo: John Walkenbach
Resumen
Si tiene un de Visual Basic para Aplicaciones de Microsoft macro que toma mucho tiempo en Finalizar, es aconsejable dar al usuario una indicación de que la macro está progresando correctamente. 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 programación fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, pero no se limita a, las garantías implícitas de comerciabilidad o idoneidad para un fin determinado. Este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento. Sin embargo, no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus requerimientos específicos.

Crear el formulario de usuario

En el ejemplo siguiente, una subrutina de Visual Basic rellena un rango grandede las celdas con un número aleatorio. El indicador muestra que se está ejecutando la macrocorrectamente.
  1. Abra un nuevo libro en Excel.
  2. En Microsoft Office Excel 2003 y en versiones anteriores de Excel, haga clic en Herramientas, seleccione Macroy, a continuación, haga clic en Editor de Visual Basic.

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

    Nota Para mostrar la Developer ficha en la cinta de opciones, siga estos pasos:
    1. Iniciar Excel 2007, haga clic en el Botón de Microsoft Officey, a continuación, haga clic en Opciones de Excel.
    2. En el Opciones de Excel cuadro de diálogo, haga clic en Popularesy, a continuación, haga clic para seleccionar la Mostrar ficha Programador en la cinta de opciones casilla de verificación.
  3. En el menú Insertar , haga clic en UserForm.
  4. Dibuje un control Label en el formulario de usuario.
  5. Cambie las siguientes propiedades del control Label a la valores siguientes:
       Property        Value   --------------------------------------------   Caption         Now updating. Please wait...					
    Nota Si el Propiedades ventana no está visible, haga clic en Ventana Propiedades En la página Vista menú.
  6. Dibuje un control Frame en el formulario de usuario.
  7. Cambie las siguientes propiedades del marco de control para el valores siguientes:
           Property        Value   -----------------------------   Name            FrameProgress					
  8. Dibuje un control Label en el control Frame .
  9. Cambie las siguientes propiedades del control Label a la 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 el Código ventana del formulario de usuario.
  2. En el módulo, escriba el siguiente código para el UserForm_Activate evento:
    Private Sub UserForm_Activate()    ' Set the width of the progress bar to 0.    UserForm1.LabelProgress.Width = 0    ' Call the main subroutine.    Call MainEnd Sub					
  3. En el menú Insertar , haga clic en módulo.
  4. En el Código ventana para el módulo, escriba el siguiente código:
    Sub ShowUserForm()    UserForm1.ShowEnd SubSub 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 UserForm1End SubSub 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.    DoEventsEnd Sub					
  5. Volver a Excel.
  6. En Excel 2003 y en versiones anteriores de Excel, seleccione Macro En la página Herramientas menú y haga clic en Macros.

    En Excel 2007, haga clic en Macros en el Código grupo en el Developer ficha.
  7. En el Macro cuadro de diálogo, haga clic para seleccionar ShowUserFormy, a continuación, haga clic en Ejecutar.
Aparece un cuadro de diálogo que tiene una barra de progreso de color rojo. La barra de progreso aumenta a medida queel Principal subrutina rellena las celdas de la hoja de cálculo.

El ShowUserForm subrutina muestra el formulario de usuario. El procedimiento que se adjunta a la Activar evento de las llamadas de formulario de usuario del Principal subrutina. El Principal subrutina rellena las celdas con números aleatorios. Además, las llamadas a subrutinas el UpdateProgressBar subrutina que actualiza el control Label en el formulario de usuario.

Nota Cuando se utiliza esta técnica, la macro tarda sólo un poco más para terminar sus tareas previstas.
XL2000 xl2002 XL2003 XL2007 XL2010

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 211736 - Última revisión: 03/21/2013 06:48:00 - Revisión: 3.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Office Excel 2003, Microsoft Excel 2010

  • kbinfo kbexpertisebeginner kbcode kbhowto kbmacro kbmt KB211736 KbMtes
Comentarios
t=">