XL: Cómo usar el bucle de estructuras en Visual Basic para aplicaciones

Seleccione idioma Seleccione idioma
Id. de artículo: 141762 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Al crear macros o aplicaciones en Visual Basic para aplicaciones, a menudo es necesario ejecutar en una sección de código varias veces. Visual Basic para aplicaciones proporciona varios métodos con el que se repita o "recorrer", una sección de código.

Este artículo proporciona código de ejemplo que ilustra el uso de las distintas estructuras de bucle y de algoritmos que proporciona Visual Basic para aplicaciones.

Más información

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e 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, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos. Cuando se decida qué estructura de bucle para utilizar, hay varias consideraciones que hay que tener en cuenta. Por ejemplo:
¿Saber exactamente cuántas veces desea recorrer el código?

Si es así, ¿cuántos?

¿Si no es así, hay una condición específica en el que desea la macro para salir del bucle? ¿Si el bucle es condicional, es conveniente probar la condición antes o después de ejecutar el código?

Procedimientos de Visual Basic de ejemplo

Los ejemplos siguientes muestran las distintas estructuras de bucle disponibles en Visual Basic para aplicaciones. A menos que se indique lo contrario, los ejemplos supone una celda o rango de celdas seleccionado. Algunas otras cosas Nota:
  • Dentro de cada ejemplo, la función de cuadro de mensaje ( MsgBox ) se utiliza para mostrar información. En estos ejemplos, donde se produce una función MsgBox , se produce es donde la debe especificar el código para repetirse a través de cada iteración del bucle.
  • Algunos de los comentarios en el código describen métodos alternativos para realizar una tarea determinada o para realizar diferentes tareas con un código similar.
  • El símbolo de tilde (~) utilizado en algunos de los comentarios debe reemplazarse por el nombre del objeto indicado [el objeto encerrado entre comillas, por ejemplo worksheets("sheet1")] o número de índice del objeto.

For... Each... Next

Este ejemplo utiliza para ... Each ... instrucción Next para recorrer todas las celdas de un rango seleccionado (un método alternativo para mostrar de los comentarios):
   ' To show the contents of each cell in a selection or specific range.
   Sub for_each_demo()

      ' Or, use "In Worksheet(~).Range(~)" to specify a specific range.
      For Each cell In Selection

         ' Displays cell contents in message box.
         MsgBox cell.Value

         ' Reset cell to next object.
      Next
   End Sub
				

Para <variable> = <n1> al <n2>

' This example loops through the code a specified number of times.
   Sub for_demo()

      ' Sets x to 1, adds 1 to x until x = 5, loops 5 times.
      For x = 1 To 5 Step 1

         ' Displays value of x in msgbox.
         MsgBox x

         ' Returns to top of loop 4 times.
      Next
   End Sub
				

Do... hasta con la prueba al comienzo del bucle

En este ejemplo se utiliza un ... Until bucle "recorrer" en una columna de celdas hasta que alcanza la primera celda vacía. Dado que la macro realiza la prueba al principio del bucle, si la primera celda está vacía, no se ejecutará el código dentro del bucle.
   ' Performs Do loop, testing at top of loop.
   ' Loops until empty cell is reached.
   ' Note that you can also use a Do While Not IsEmpty(ActiveCell) loop.

   Sub test_before_do_loop()

      ' Test contents of active cell; if active cell is empty, exit loop.
      Do Until IsEmpty(ActiveCell)

         ' Displays cell contents in message box.
         MsgBox ActiveCell.Value

         ' Step down 1 row to the next cell.
         ActiveCell.Offset(1, 0).Select

        ' Return to top of loop.
      Loop
   End Sub
				

Do... hasta con la prueba al final del bucle

En este ejemplo también utiliza un bucle Do , pero comprueba en la parte inferior del bucle. La primera línea de la macro, comprueba la primera celda. Sin la primera línea de código para probar la celda inicial, el código se ejecutaría al menos una vez, porque el bucle de prueba en la parte inferior.
   ' Performs Do loop, testing at bottom of loop.

   Sub test_after_do_loop()

      ' Test to see if first cell is empty.
      If IsEmpty(ActiveCell) Then Exit Sub

         ' Begin loop.
         Do

            ' Displays cell contents in message box.
            MsgBox ActiveCell.Value

            ' Steps down one row to the next cell.
            ActiveCell.Offset(1, 0).Select

            ' Test contents of active cell; if empty, exit loop
            ' or Loop While Not IsEmpty(ActiveCell).

         Loop Until IsEmpty(ActiveCell)
      End Sub
				
Precaución : no bifurcar en el cuerpo de un While ... Wend bucle sin ejecutar la instrucción While . Hacerlo puede producir errores en tiempo de ejecución u otros problemas que son difíciles de localizar.

La tarea pendiente ... instrucción Loop proporciona una manera más estructurada y flexible para realizar el bucle. El While ... Wend bucle se incluye en Visual Basic para aplicaciones para la compatibilidad con versiones anteriores.

While... Wend bucle

Nota : el While ... Wend bucle se incluye en Visual Basic para aplicaciones para la compatibilidad con versiones anteriores.

Este ejemplo utiliza un While ... Wend bucle. Este bucle se comprueba en la parte superior del bucle sólo.
    ' Performs While loop, testing at top of the loop.
   Sub While_loop_demo()

      ' Sets condition of loop, while active cell is not empty.
      While Not IsEmpty(ActiveCell)

         ' Displays cell contents in message box.
         MsgBox ActiveCell.Value

         ' Step down one row to the next cell.
         ActiveCell.Offset(1, 0).Select

      ' End While loop.
      Wend
   End Sub
				

If... ThenBucle de GoTo

En este ejemplo crea un bucle con "<condition> Si <condición> GoTo <etiqueta de línea > Then "estructura. Esta estructura se ha probado en la parte inferior del bucle.
     Sub loop_using_goto()

      ' Test to see if first cell is empty.
      If IsEmpty(ActiveCell) Then Exit Sub

      ' Line label indicating top of loop.
   top:

      ' Displays cell contents in message box.
      MsgBox ActiveCell.Value

      ' Step down one row to the next cell.
      ActiveCell.Offset(1, 0).Select

      ' Test to see if new cell is empty.
      If Not IsEmpty(ActiveCell) Then GoTo top

   End Sub
				

Referencias

Para obtener más información sobre bucle estructuras, en el Editor de Visual Basic, haga clic en el Ayudante, escriba bucles y a continuación, haga clic en Buscar para ver los temas.

Para obtener información adicional sobre cómo obtener ayuda con Visual Basic forApplications, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
305326OFFXP: Recursos de programación para Visual Basic para aplicaciones
226118OFF2000: Recursos de programación para Visual Basic para aplicaciones
163435VBA: Recursos de programación para Visual Basic para aplicaciones
manual del usuario de Visual Basic de Microsoft Excel, versión 5.0 , páginas 143 151

Propiedades

Id. de artículo: 141762 - Última revisión: viernes, 19 de enero de 2007 - Versión: 3.4
La información de este artículo se refiere a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 98 para Macintosh
  • Microsoft Excel 5.0 para Macintosh
Palabras clave: 
kbmt kbcode kbhowto kbprogramming KB141762 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): 141762

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