Recorrido a través de un rango de celdasLooping Through a Range of Cells

Al utilizar Visual Basic, con frecuencia necesitará ejecutar el mismo bloque de instrucciones en cada una de las celdas de un rango.When using Visual Basic, you often need to run the same block of statements on each cell in a range of cells. Para ello, combine una instrucción de repetición y uno o más métodos para identificar cada celda, una a una, y ejecutar la operación.To do this, you combine a looping statement and one or more methods to identify each cell, one at a time, and run the operation.

Una manera de ejecutar un bucle en un rango es utilizar el bucle For...Next con la propiedad Cells.One way to loop through a range is to use the For...Next loop with the Cells property. Con la propiedad Cells, puede sustituir el contador del bucle (u otras variables o expresiones) para los números de índice de la celda.Using the Cells property, you can substitute the loop counter (or other variables or expressions) for the cell index numbers. En el siguiente ejemplo se sustituye la variable counter por el índice de fila.In the following example, the variable counter is substituted for the row index. El procedimiento recorre el rango C1:C20 y establece en 0 (cero) cualquier número cuyo valor absoluto sea menor que 0,01.The procedure loops through the range C1:C20, setting to 0 (zero) any number whose absolute value is less than 0.01.

Sub RoundToZero1() 
 For Counter = 1 To 20 
 Set curCell = Worksheets("Sheet1").Cells(Counter, 3) 
 If Abs(curCell.Value) < 0.01 Then curCell.Value = 0 
 Next Counter 
End Sub

Otra manera sencilla de ejecutar un bucle en un rango es utilizar el bucle For Each...Next en la colección de celdas devuelto por el método Range.Another easy way to loop through a range is to use a For Each...Next loop with the collection of cells specified in the Range property. Visual Basic establece automáticamente una variable de objeto para la siguiente celda cada vez que se ejecuta el bucle.Visual Basic automatically sets an object variable for the next cell each time the loop runs. El siguiente procedimiento realiza un bucle en el rango A1:D20, estableciendo en 0 (cero) cualquier número cuyo valor absoluto sea menor que 0.01.The following procedure loops through the range A1:D10, setting to 0 (zero) any number whose absolute value is less than 0.01.

Sub RoundToZero2() 
 For Each c In Worksheets("Sheet1").Range("A1:D10").Cells 
 If Abs(c.Value) < 0.01 Then c.Value = 0 
 Next 
End Sub

Si no conoce los límites del rango en que desea ejecutar el bucle, puede utilizar la propiedad CurrentRegion para devolver el rango que rodea la celda activa.If you do not know the boundaries of the range you want to loop through, you can use the CurrentRegion property to return the range that surrounds the active cell. Por ejemplo, el siguiente procedimiento, cuando se ejecuta desde una hoja de cálculo, ejecuta un bucle en el rango que rodea la celda activa, estableciendo en 0 (cero) todos los números cuyo valor absoluto sea menor que 0.01.For example, the following procedure, when run from a worksheet, loops through the range that surrounds the active cell, setting to 0 (zero) any number whose absolute value is less than 0.01.

Sub RoundToZero3() 
 For Each c In ActiveCell.CurrentRegion.Cells 
 If Abs(c.Value) < 0.01 Then c.Value = 0 
 Next 
End Sub

Soporte técnico y comentariosSupport and feedback

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación?Have questions or feedback about Office VBA or this documentation? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.