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

Seleccione idioma Seleccione idioma
Id. de artículo: 211736 - Ver los productos a los que se aplica este artículo
Para obtener una versión de Microsoft Excel 97 de este artículo, consulte 170782.

Idea enviada por el artículo: John Walkenbach
Expandir todo | Contraer todo

En esta página

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 grande de las celdas con un número aleatorio. El indicador muestra que se está ejecutando la macro correctamente.
  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 Main
    End 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.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. 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 que el 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.

Propiedades

Id. de artículo: 211736 - Última revisión: jueves, 21 de marzo de 2013 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2010
Palabras clave: 
kbinfo kbexpertisebeginner kbcode kbhowto kbmacro kbmt KB211736 KbMtes
Traducción automática
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

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com