Colección Controls

Me gustaría saber si con la colección controls puedo asignarle un valor a un cuadro de texto de un formulario. Para ello no quiero utilizar el nombre del cuadro de texto, sino un índice. Por ejemplo Me. Controls. Item(1)¿Cómo debería terminar la sentencia para conseguirlo?

1 Respuesta

Respuesta
1
No así no más y listo.
***************
Me.Controls.Item(1).Value = MiValor
****************
O TAMBIEN
***************
Me.Controls(1).Value = MiValor
****************
Donde mivalor puede sert una variable o una cadena, lo que quieras.
Att:TELEMACO
El error puede ser por dos cosas:
Primero que el numeral uno(1) no corresponde a una caja de texto... OJO:este orden va de acuerdo a como se colocaron los controles en el formulario.. NO POR EL ORDEN DE TABULACIÓN ni ningún otro...
Utilice esta instrucción para mostrar le orden de los controles..
*************************
For Each ctl In me.Controls
NombreControl = NombreControl & CTL.NAME & VbCrLf
Next ctl
msgbox NombreControl
**************************
Te mostrara como es el orden de los controles...
La propiedad o el código que te mande esta bien... debes mirar que el control sea una caja de texto y no una etiqueta u otro control...
Att:telemaco
Cuando pongo Me.Controls.Item(1).Value = MiValor, me dice que el objeto no admite esa propoiedad o método. Supongo que se refiere a "value"
OK esto funcionó, gracias. Pero sigo teniendo un problema: tengo un formulario desde el que inserto registros en una tabla con dos campos, código y cantidad. Para ello tengo dos cajas de texto en el formulario, código y cantidad, y además una tercera caja independiente que aparece con cada registro ("descripción") cuyo valor no se inserta en la tabla. Así por cada registro que inserto en el formulario me aparecen las cajas: código-cantidad-descripción. ¿Hay alguna manera de establecer el valor de una de esas cajas "descripción" del formulario individualmente sin que me cambie el valor de todas?
Disculpa mi demora...
CLARO QUE SE PUEDE, DESDE DISEÑO, VE A PROPIEDADES DE LA CAJA DESCRIPCIÓN, AHORA VE A LA FICHA DATOS, Ahora busca valor por defecto, y colocaselo aquí, si es texto debes colocarlo entre comillas, si es numérico solo el numero y listo...
Cada vez que crees un nuevo registro, el te saca este valor...
Att:telemaco
¿Cómo puedo crear un control, por ejemplo una caja de texto, en ejecución utilizando Visual Basic?
Te mando el código que te puede servir... ahhhh el código no es mio lo he bajado de internet y sirve, he utilizado una rutina parecida. Aunque hay un ejemplo parecido en access..
Pero ojo... toca crear un formulario, ya que en el mismo no se puede...
Option Explicit
Sub CrearFormulario()
' **************
' Código de prueba
' [email protected]
' Junio de 2002
' **************
Dim frm As Form
Dim strFormulario As String
Const conFilas As Long = 16
Const conColumnas As Long = 16
Const conAncho As Long = 400
Const conAlto As Long = 400
Const conSeparacion As Long = 50
Const conMargenX As Long = 40
Const conMargenY As Long = 40
Const conComilla As String = """"
Const conIncrementoColor As Long = 65536
Dim lngFila As Long
Dim lngColumna As Long
Dim lngX As Long
Dim lngY As Long
Dim ctlEtiqueta As Control
Dim ctlLabel As Control, ctlText As Control
Dim ctlBoton As Control
Dim intDataX As Integer, intDataY As Integer
Dim intLabelX As Integer, intLabelY As Integer
Dim colColor As Long
Dim aControles() As Control
Dim strCodigoBotonSalir As String
Dim mdlFormulario As Module
ReDim aControles(conColumnas, conFilas)
' Crea el nuevo formulario
Set frm = CreateForm
colColor = 0 * conIncrementoColor \ 16
With frm
.RecordSelectors = False
.NavigationButtons = False
.Width = 7300
.ScrollBars = 0
.DividingLines = False
.MinMaxButtons = 0
End With
For lngFila = 0 To conFilas - 1
lngY = lngY + conAncho + conSeparacion
For lngColumna = 0 To conColumnas - 1
lngX = lngX + conAlto + conSeparacion
Set aControles(lngColumna, lngFila) = CreateControl(frm.Name, acLabel, , "", "", _
lngX, lngY, conAncho, conAlto)
Set ctlEtiqueta = aControles(lngColumna, lngFila)
With ctlEtiqueta
.BackColor = colColor
.BackStyle = 1
End With
colColor = colColor + conIncrementoColor
Next lngColumna
lngX = 0
Next lngFila
Set ctlBoton = CreateControl(frm.Name, acCommandButton, , "", "", 8000, 8000, 1500, 500)
ctlBoton.Caption = "Salir"
ctlBoton.Name = "cmdSalir"
Set mdlFormulario = frm.Module
strCodigoBotonSalir = "Private sub " & ctlBoton.Name & "_Click()" & _
vbCrLf & _
vbCrLf & _
"msgbox " & conComilla & "Cierro el formulario" & conComilla & _
" & me.name " & _
vbCrLf & _
" docmd.Close" & _
vbCrLf & _
"End Sub"
With mdlFormulario
.InsertText strCodigoBotonSalir
End With
' Restaura el formulario.
DoCmd.Restore
Erase aControles
Set ctlEtiqueta = Nothing
strFormulario = frm.Name
DoCmd.Save acForm, strFormulario
DoCmd.OpenForm strFormulario
Debug.Print Forms(strFormulario).Width
Set frm = Nothing
End Sub
Att:telemaco
No se te olvide finalizar la pregunta.
Att:telemaco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas