Matriz de botones

Que tal colega, estoy inscrito en esta categoría como experto y el objetivo es llegar a saber una buena porción de lo que ustedes los "gurús" del excel saben.
Aclaro que la pregunta que hago es personal y no obedece a ninguna consulta que me hayan hecho a mi.
Tengo la idea de hacer un formulario con una matriz de botones, he logrado hacer la matriz de variables y asignar valores con el tipo de datos que he creado, también intentando por otro lado he logrado dibujar todos los botones a través de macro (es mejor que dibujarlos pues son 64) pero no logro dibujarlos como objetos de una matriz y menos asignarles valores personalizados a los mismos.
Como solución había optado por manejar dos matrices una con variables y otra con objetos, con la de variables voy bien pero con la de objetos casi que voy de para atrás.
Te adjunto los códigos de lo que he tratado de hacer a ver si te queda más fácil corregirlos que pensar todo.
Este es el que funciona para dibujar los botones
Private Sub UserForm_Initialize()
Dim arriba, izquierda, medida As Integer
medida = 30
arriba = medida
izquierda = medida + 5
For i = 1 To 8
For j = 1 To 8
Set Boton = Controls.Add("Forms.CommandButton.1", ij)
Boton.Left = izquierda
Boton.Top = arriba
Boton.Width = medida
Boton.Height = medida
izquierda = izquierda + medida
Next j
izquierda = medida + 5
arriba = arriba + medida
Next i
IniciarMatriz (Pantalla)
'Pantalla.Show
End Sub
Con este inicio la matriz de variables y me funciona aceptablemente
Option Base 1
Public Type casilla
lleno As Boolean
color As String
vecinos As Boolean
valido As Boolean
End Type
Dim casillas(8, 8) As casilla
Dim tablero(8, 8) As CommandButton
Sub IniciarMatriz(form As UserForm)
f = 1
c = 1
Do While f <= 8
Do While c <= 8
If (c = 4 Or c = 5) And (f = 4 Or f = 5) Then
If (c = 4 And f = 4) Or (c = 5 And f = 5) Then
casillas(f, c).color = "azul"
Else
casillas(f, c).color = "rojo"
End If
casillas(f, c).lleno = True
casillas(f, c).valido = False
Else
casillas(f, c).lleno = False
End If
c = c + 1
Loop
f = f + 1
Loop
End Sub
El problema es que necesitaría vincular las 2 matrices o poder asignar propiedades a la matriz de botones para poder hacer lo que deseo.
Bueno, espero me puedas ayudar.
Cordialmente,
Cesar mera

1 respuesta

Respuesta
1
Sí, te conozco. He leído algunas de tus respuestas, impactándome tu profesionalismo. Definitivamente, conoces bastante del tema y tienes muy buena voluntad.
Ahora, eso de gurú está absolutamente mal. Ni cerca...
La verdad es que estoy bastante ocupado laboralmente y no tengo mucho tiempo libre como para desarrollar una macro como la que muestras.
De todas formas me parece que estás muy bien orientado.
Como método socrático te diría que revises el modo en que pasas los argumentos a la otra función.
Pantalla, entiendo, es el nombre que le diste a tu formulario. Como habrás notado, a VBA no le gusta que le pases un formulario como arguemento.
En todo caso te convendría trabajar con cada botón creado en una estructura del tipo:
For Each botonHecho In Controls
IniciarMatriz (botonHecho)
Next botonHecho
Pero hay que pulirlo un poco más.
Bien, hasta aquí llegué, espero que te ayude a completar tu procedimiento
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas