Necesito crear etiquetas y botones dinámicamente y luego agregarlos a un marco dentro de una forma de usuario. ¿Cómo hago esto? Parece que debería ser más fácil de lo que realmente es.Agregar controles a un marco en una forma de usuario de Excel con VBA
Respuesta
El código siguiente muestra cómo se puede rellenar dinámicamente un cuadro en un formulario de usuario con controles ...
En la forma que se utiliza Tenía un control marco llamado Frame1, por lo que en el UserForm_Initialize se llama Frame1.Controls. Agregar para incrustar un control en el marco. Puede configurar el control que se devuelve a una variable de control WithEvents que haya definido en el módulo de código UserForm para que pueda responder a los eventos en los controles que desee ...
Por lo tanto, con este método debe pregrabar cualquier código de evento que desee para cualquier control que cree ...
También tenga en cuenta que puede colocar y ajustar el tamaño de los controles incluso si las propiedades superior, izquierda, ancho y alto no aparecen necesariamente en intellisense ...
Private WithEvents Cmd As MSForms.CommandButton
Private WithEvents Lbl As MSForms.Label
Private Sub UserForm_Initialize()
Set Lbl = Frame1.Controls.Add("Forms.Label.1", "lbl1")
Lbl.Caption = "Foo"
Set Cmd = Frame1.Controls.Add("Forms.CommandButton.1", "cmd1")
End Sub
Private Sub Cmd_Click()
Cmd.Top = Cmd.Top + 5
End Sub
Private Sub Lbl_Click()
Lbl.Top = Lbl.Top + 5
End Sub
Mi variación sobre el tema anterior. Sin embargo, esto es solo para una serie de botones de 4x4. Crea una forma de usuario y agrégala a su código. Los mismos conceptos se pueden utilizar con las etiquetas (o ver la respuesta anterior):
Private cmdLots(20) As MSForms.CommandButton
Private Sub UserForm_Initialize()
For i = 1 To 4
For j = 1 To 4
k = i + (4 * j)
Set cmdLots(k) = UserForm2.Controls.Add("Forms.CommandButton.1", "cmd1")
With cmdLots(k)
.Top = i * 25
.Left = (j * 80) - 50
.BackColor = RGB(50 * i, 50 * j, 0)
.Caption = "i= " & i & " j= " & j
End With
Next j
Next i
End Sub
- 1. Cómo agregar eventos a los controles creados en tiempo de ejecución en Excel con VBA
- 2. Agregar controles dinámicamente a controles de usuario
- 3. VBA Excel: Agregar un segundo a la vez
- 4. Excel VBA: Obtención de los valores de controles de formulario
- 5. Copiar elementos de una página a otra en multipágina con VBA en Excel
- 6. OnClick en Excel VBA
- 7. Assign en función de VBA clic a un botón creado de forma dinámica en Excel formUsuario
- 8. Crear una tabla SQL de Excel VBA
- 9. Agregar un control a una lista de controles dinámicamente
- 10. Renombrar archivos con Excel VBA
- 11. Subcadena de Excel VBA
- 12. Función de llamada a Excel VBA con nombre de variable
- 13. Cómo acceder a Checkbox desde VBA en Excel 2007
- 14. Eliminación de imágenes con Excel VBA
- 15. matriz en Excel VBA
- 16. VBA Agregar una clase a una colección
- 17. Barra de progreso en VBA Excel
- 18. Encapsulando controles de usuario en ASP.NET MVC
- 19. ¿Puede una función de VBA en Excel devolver un rango?
- 20. Filtrado de matrices 2D en Excel VBA
- 21. Truncamiento doble con VBA en Excel
- 22. Ocultar una hoja de cálculo de Excel con VBA
- 23. Excel VBA - Interpretar valores "N/A"
- 24. Uso de una matriz de rangos en VBA - Excel
- 25. Obtenga el contenido de una carpeta sharepoint con Excel VBA
- 26. cómo dividir una cadena con múltiples delimeters en vba excel?
- 27. Convertir controles de usuario a controles de servidor
- 28. Forzar una actualización de pantalla en Excel VBA
- 29. Errores de manejo adecuado en VBA (Excel)
- 30. Excel VBA - xlDown
Por qué el ' "1" 'al final del nombre de la clase en el método' add'? – Triztian
No lo sé. Sé que no funciona sin eso. –
Me gustaría saber por qué tiene que ser "Forms.CommandButton.1" también – FinancialRadDeveloper