Paso 1: dibujar una celda
Sub Ejemplo_SetCellColor()
Contador = 3
ActiveCell.Offset(Contador, 0).Interior.ColorIndex = 6
End Sub
Paso 2: dibujar una línea
Sub Ejemplo_For_Next()
Dim inicio As Range
Set inicio = ActiveCell
For Contador = 1 To inicio.Value
ActiveCell.Offset(Contador, 0).Interior.ColorIndex = 6
Next
End Sub
Paso 3: cuadrado con 4 líneas
Sub Ejemplo_For_Next()
Dim inicio As Range
Set inicio = ActiveCell
For Contador = 1 To inicio.Value
ActiveCell.Offset(Contador, 1).Interior.ColorIndex = 6 ' vertical
ActiveCell.Offset(1, Contador).Interior.ColorIndex = 6 ' horizontal
ActiveCell.Offset(Contador, inicio.Value).Interior.ColorIndex = 6 ' vertical
ActiveCell.Offset(inicio.Value, Contador).Interior.ColorIndex = 6 ' horizontal
Next
End Sub
Paso 4: bucle de cuadrados (todos tienen el mismo vértice inicial
Sub Ejemplo_For_Next()
Dim inicio As Range
Set inicio = ActiveCell
lado = inicio.Value
Do While (lado >= 1)
For Contador = 1 To lado
ActiveCell.Offset(Contador, 1).Interior.ColorIndex = 6 ' vertical
ActiveCell.Offset(1, Contador).Interior.ColorIndex = 6 ' horizontal
ActiveCell.Offset(Contador, lado).Interior.ColorIndex = 6 ' vertical
ActiveCell.Offset(lado, Contador).Interior.ColorIndex = 6 ' horizontal
Next
lado = lado - 4
Loop
End Sub
Paso 5: colocar el inicio de los cuadrados y configurar color
Sub Ejemplo_For_Next()
Dim inicio As Range
Set inicio = ActiveCell
lado = inicio.Value
posInicio = 0
Do While (lado >= 1)
colorCuadrado = lado 'posInicio + 1
For Contador = 1 To lado
ActiveCell.Offset(posInicio + Contador, posInicio + 1).Interior.ColorIndex = colorCuadrado ' vertical
ActiveCell.Offset(posInicio + 1, posInicio + Contador).Interior.ColorIndex = colorCuadrado ' horizontal
ActiveCell.Offset(posInicio + Contador, posInicio + lado).Interior.ColorIndex = colorCuadrado ' vertical
ActiveCell.Offset(posInicio + lado, posInicio + Contador).Interior.ColorIndex = colorCuadrado ' horizontal
Next
lado = lado - 4
posInicio = posInicio + 2
Loop
End Sub
Se puede realizar también con Cells, equivalencia:
Sub Ejemplo_Cell()
Dim inicio As Range
Set inicio = ActiveCell
a = 2
b = 3
inicio.Offset(a, b).Interior.ColorIndex = 4
Cells(inicio.Row + a, inicio.Column + b).Interior.ColorIndex = 6
End Sub