
La forma más cómoda para identificar una celda en una macro, cuando tanto la fila como la columna son variables, es con la ayuda de la instrucción Cells. Esta instrucción tiene dos argumentos: la fila y la columna de la celda. Por ejemplo, la instrucción Cells(3, 4) se refiere a la celda [D3] porque la D es la cuarta letra del alfabeto. La siguiente macro, por ejemplo, recorre el rango [A1:D10] reemplazando cada valor por su cuadrado:
Sub Cuadrados()
For i = 1 To 10
For j = 1 To 4
Cells(i, j) = Cells(i, j) * Cells(i, j)
Next
Next
End Sub
La columna puede identificarse también con el número de orden de la letra: la celda [D3] se puede expresar también con Cells(3, “D”).
Comentarios
Son distintos For Each se usa con colecciones, y cuando necesitas recorrer toda la colección sin discriminar demasiado, entonces es mucho más rápido y efectivo, para pocos valores es casi lo mismo, pero si es una buena practica usarlo cuando lo amerite y necesites recorrer una colección completa.
Si muchas veces es mejor, pero siempre y cuando necesites recorrer todo el conjunto de datos y no tengas que saber siempre su ubicacion exacta, depende el caso, conviene uno u otro. El tema también que para principiantes les es más complicado manejarlo a la perfección también.
También para mejor lectura y comodidad, conviene poner el valor de la celda en una variable, además que seria más rápido creo. Obvio que acá es prácticamente lo mismo porque solo en un ejemplo sencillo, pero es buena practica creo.
y mejor seria poner la funcion así Cells(i, j) = Cells(i, j) ^2
Mejor seria GenerarTablaConNumsCuadrados()
O también RecorreUnaTablaGenerandoNumerosCuadrados().
Entonces seria GenerarNumerosCuadrados() ….
La llamé Cuadrados porque genera una tabla de números cuadrados.
Yo prefiero For Each
Mal nombrada la funcion ,….. el nombre tiene que ser un verbo mas sustantivo … seria RecorrerCuadrados()
Mal nombrada la funcion ,….. el nombre tiene que ser un verbo mas sustantivo … seria RecorrerCuadrados()