solicito ayuda para manejar TextBox dentro de un For...

04/08/2005 - 01:45 por Jose Manuel Garcia | Informe spam
Private Sub CommandButton1_Click()

Set r = Range("Datos")
For n = 1 To 2
aa = "Textbox" + CStr(n)
'No funciona porque a tiene "TextBox1"
r.Cells(n, 1) =aa.value
Next n

End
End Sub
¿Como puedo manejar TextBox dentro de un For... Next

Preguntas similare

Leer las respuestas

#1 Fco. Javier Bedoya
04/08/2005 - 02:04 | Informe spam
Hola :
Creo que lo que necesista es hacer la iteración sobre la colección de
controles que contiene al TextBox.
Por ejemplo :

Dim n As Control

For Each n In Me.Controls
If (n.Name.ToString = "TextBox1") Then n.Text = aa.text
Next

Un saludo.

Javier Bedoya.
Web : http://javierbedoya.iespana.es [En desarrollo/Sin actualizar]
Para responder a mis mensajes de las usenet quitar de mi dirección
de correo.

"Jose Manuel Garcia" escribió en el
mensaje news:049701c59885$7620caa0$

Private Sub CommandButton1_Click()

Set r = Range("Datos")
For n = 1 To 2
aa = "Textbox" + CStr(n)
'No funciona porque a tiene "TextBox1"
r.Cells(n, 1) =aa.value
Next n

End
End Sub
¿Como puedo manejar TextBox dentro de un For... Next
Respuesta Responder a este mensaje
#2 Tristan
04/08/2005 - 12:33 | Informe spam
Si bien es posible hacer eso, te recomiendo que utilices un array. Recorrer
todos los controles, además de ser MUY poco eficiente, producirá código poco
legible y difícil de depurar.

En todo caso, solo haría algo así para cargar el array de controles. El
resto de accesos siempre sobre el array. Esta función podría ser útil:

Private Function GetArrayTextBox(ByVal nombre As String) As TextBox()
Dim lista As New SortedList()
Dim c As Control
For Each c In Me.Controls
If c.Name Like nombre & "*" Then
lista.Add(CInt(c.Name.Substring(nombre.Length)), c)
End If
Next
Dim textos(lista.Count - 1) As TextBox
lista.Values.CopyTo(textos, 0)
Return textos
End Function

Para utilizarla, algo así:

Dim textos() As TextBox = GetArrayTextBox("TextBox")
Dim i As Integer
For i = 1 To textos.Length
MsgBox(textos(i - 1).Text)
Next

La función debería ser recursiva para contemplar los controles no situados
directamente en el formulario, por ejemplo en un panel.

Juan Carlos Badiola Saiz
MVP - C#
Respuesta Responder a este mensaje
#3 Fco. Javier Bedoya
04/08/2005 - 16:16 | Informe spam
Hola :
Es cierto, es una función poco eficiente.
Aunque yo la usaría para iterar directamente sobre los controles de un
contenedor concreto, por ejemplo un control panel siempre y cuando no tenga
demasiados controles añadidos.
Pero como dices, el array es más elegante, aparte de más consistente.
Pero me pareció que quería una aplicación directa de lo que él mismo estaba
haciendo.

Gracias.
Un saludo.

Javier Bedoya.
Web : http://javierbedoya.iespana.es [En desarrollo/Sin actualizar]
Para responder a mis mensajes de las usenet quitar de mi dirección
de correo.

"Tristan" escribió en el mensaje
news:
Si bien es posible hacer eso, te recomiendo que utilices un array.
Recorrer
todos los controles, además de ser MUY poco eficiente, producirá código
poco
legible y difícil de depurar.

En todo caso, solo haría algo así para cargar el array de controles. El
resto de accesos siempre sobre el array. Esta función podría ser útil:

Private Function GetArrayTextBox(ByVal nombre As String) As TextBox()
Dim lista As New SortedList()
Dim c As Control
For Each c In Me.Controls
If c.Name Like nombre & "*" Then
lista.Add(CInt(c.Name.Substring(nombre.Length)), c)
End If
Next
Dim textos(lista.Count - 1) As TextBox
lista.Values.CopyTo(textos, 0)
Return textos
End Function

Para utilizarla, algo así:

Dim textos() As TextBox = GetArrayTextBox("TextBox")
Dim i As Integer
For i = 1 To textos.Length
MsgBox(textos(i - 1).Text)
Next

La función debería ser recursiva para contemplar los controles no situados
directamente en el formulario, por ejemplo en un panel.

Juan Carlos Badiola Saiz
MVP - C#
Respuesta Responder a este mensaje
#4 Tristan
04/08/2005 - 19:09 | Informe spam
Ya. Si tan solo lo digo por que llevo un tiempo viendo que mucha gente
recorre todos los controles para acceder a ellos en bucle.

No dejaría de ser una pena que se pierdan las grandes posibilidades de .net
de trabajar con colecciones de controles.

Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida