Hola a todos,
Estos días estoy profundizando en los fractales y cómo se pueden generar con código. Y aunque me interesa hacerlo en typescript estoy probando con VBA y la verdad es que estoy encontrando buenos resultados.
Este es el código que estoy trabajando y que por ahora es capaz de generar una espirar de varias vueltas y en función de la gradación del color cada n celdas.
Este es el código:
Sub CrearEspiral()
'Declaramos variables
Dim hoja As Worksheet
Dim fila As Integer, col As Integer
Dim pasos As Integer
Dim color As Long
Dim i As Integer, j As Integer
Dim intensidad As Integer
Dim gradacion As Integer
Dim k As Integer
Dim colorIndex As Integer
'Inicializar el generador de números aleatorios
Randomize
'Obtener color aleatorio
colorIndex = Int((4 * Rnd) + 1)
Set hoja = ActiveSheet
'Obtener fila y columna activas
fila = ActiveCell.Row
col = ActiveCell.Column
'Inicializar variables
pasos = 1
intensidad = 255
gradacion = 2
'Número de vueltas de la espiral
For i = 1 To 15
'Pintar celdas en: derecha, abajo, izquierda, arriba
For j = 1 To 4
'Elegir el color en base al índice aleatorio
Select Case colorIndex
Case 1 'Rojo
color = RGB(intensidad, 0, 0)
Case 2 'Verde
color = RGB(0, intensidad, 0)
Case 3 'Azul
color = RGB(0, 0, intensidad)
Case 4 'Amarillo
color = RGB(intensidad, intensidad, 0)
End Select
'Pintar celdas en una dirección
For k = 1 To pasos
If fila > 0 And col > 0 Then
hoja.Cells(fila, col).Interior.color = color
End If
Select Case j
Case 1 'Derecha
col = col + 1
Case 2 'Abajo
fila = fila + 1
Case 3 'Izquierda
col = col - 1
Case 4 'Arriba
fila = fila - 1
End Select
'Disminuir la intensidad del color para la siguiente celda
'Cambiar la intensidad cada n celdas
If k Mod 5 = 0 Then
If intensidad > gradacion Then
intensidad = intensidad - gradacion
End If
End If
Next k
'Aumentar pasos cada dos direcciones
If j Mod 2 = 0 Then
pasos = pasos + 1
End If
Next j
Next i
End Sub
Y este es el resultado:
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2023/09/GENERAR-ESPIRAL-DE-COLOR-EN-UNA-HOJA-EXCEL-USANDO-VBA.png?resize=1024%2C575&ssl=1)
He crear el código para que de forma aleatoria se cree una espiral de base color rojo, amarillo, verde o azul. Y realmente creo que es muy entretenido.
Os lo dejo a modo curiosidad o, si realmente os sirve, pues mejor.
El código está bastante comentado y básicamente se fundamenta en movimientos de celda y otorgar intensidad al color RGB modificando uno de sus componentes.
Y esto es todo, copiad el código pegadlo en el editor de VBA y ejecutadlo. Se genera en la celda activa donde tengáis el cursos, en caso de necesidad podéis indicar una celda específica.
Y esto es todo, disfrutad de lo que queda de domingo 🙂
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies