Cómo crear objetos dentro de un Frame desde código

Necesito saber cómo puedo crear objetos dentro de un frame, algo como esto

Tengo que crear los objetos que están dentro del recuadro.

Los label's cantidad, descripcion, etc ya van a estar creados y sirven como referencia para la posición de los objetos nuevos y luego de haber creado la primer linea puedo decidir si crear otra igual debajo de esta o no, dependiendo de lo que el usuario quiera.

2 respuestas

Respuesta
2

Con el siguiente código crear un textbox y lo pone debajo del label1.

Private Sub CommandButton1_Click()
    izq = Label1.Left
    alt = Label1.Top + Label1.Height + 10
    Set txtB1 = Controls.Add("Forms.TextBox.1")
    With txtB1
        .Height = 20
        .Width = 50
        .Left = izq
        .Top = alt
    End With
End Sub

Además de resolver crear el textbox, debajo del ultimo textbox que tengas y de resolver crearlo dentro de un frame, me parece que todavía es más complicado resolver y tener el control de los textbox que has creado, por que supongo que después los datos que captures en los textbox los vas a ocupar para algo, también supongo que para ponerlos en celdas. Pero, qué nuevo textbox va en qué celda?

Lo que te recomiendo es que en una sola línea de captura escribas un registro, si es necesario otro registro, entonces guardas los datos en una hoja temporal o los pasas a un listbox, limpias los textbox y que empiece una nueva captura.

Voy a considerar hacerlo como usted lo recomienda, pero ya que lo mencionas, cómo capturo los datos del textbox y label's creados?

A que te refieres con esto:

"cómo capturo los datos del textbox y label's creados?"

¿Te refieres a pasar los datos de los textbox a la hoja?

Puede ser así:

Range("A5") = textbox1

Pero cómo sé que el textbox creado desde código tiene por nombre Textbox1?, porque en el código que me enviaste no se le pone un nombre específico al textbox, sólo se crea un objeto de tipo textbox

Porque puede resultar que yo tenga en el mismo form, fuera del frame un textbox que se llame textbox1. No sé si me doy a entender

Pon esta instrucción para ponerle nombre

.Name = "nuevotxt"

Muchísimas gracias Dante, no sabe la gran ayuda que me ha dado, admiro realmente su amplio conocimiento.

Saludos.

Siento molestar pero no me sirve la instrucción, este es el código:

Private Sub CommandButton1_Click()
valor = Textbox1.Value
MsgBox valor
End Sub
Private Sub Userform_Activate()
    izq = Label1.Left - 7.5
    alt = Label1.Top + Label1.Height + 10
    Set txtB1 = Me.Frame1.Controls.Add("Forms.TextBox.1")
    With txtB1
        .Name = "TextBox1"
        .Height = 18
        .Width = 48
        .Left = izq
        .Top = alt
    End With
End Sub

este sería el form, no sé si estaré haciendo algo mal.

A mí sí me funcionó.

Revisa que tu frame se llame Frame1 y que el label se llama Label1

Qué mensaje de error te pone.

El objeto sí lo crea perfectamente, pero al poner un texto o numero en el textbox y darle en aceptar no me muestra el valor de dicho textbox en el MsgBox, el error que me da es que necesito un objeto para la parte donde pongo que valor es igual a TextBox1.Value

saludos Dante.

Con gusto te sigo ayudando. Podrías crear una nueva pregunta y en el desarrollo me describes lo que necesitas, al final del desarrollo escribe que va dirigida a Dante Amor.

Respuesta
1

Muchas gracias y verdaderamente muy útil tus consejos los cuales nos ayudan en su aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas