Ayuda con FOR...NEXT

22/08/2006 - 21:30 por vm_tapia | Informe spam
Tengo un UserForm con 128 TextBox distribuidas y nombradas de la siguiente
manera:

C1, D1, PU1, I1
C2, D2, PU2, I2
C3, D3, PU3, I3



C31, D31, PU31, I31
C32, D32, PU32, I32

Mi necesidad es la siguiente:

1.- tengo que cargar la informacion de una hoja que esta distribuida de la
siguiente manera:

A B C D E ... CS
1 Folio Cant. Desc. Precio Cant. ... Importe
2 1234 1 XXXX 10.00 1 ... 100.00

(32 grupos de 3 columnas (cantidad, descripcion, precio) a partir de la B)

Lo que necesito es un bucle FOR .. NEXT en el codigo del UserForm para
cargar el
contenido de acuerdo a la hoja y su TextBox, asi lo tengo: (omito la rutina
para
establecer el folio y la posicion dentro de la hoja)
=Formulario.C1.Value = .offset(, 1).Value
Formulario.D1.Value = .offset(, 2).Value
Formulario.PU1.Value = FormatNumber(.offset(, 3).Value)
Formulario.I1.Value = FormatNumber(.offset(, 1).Value) * .offset(, 3).Value)
...
...
...
Formulario.C32.Value = .offset(, 94).Value
Formulario.D32.Value = .offset(, 95).Value
Formulario.PU32.Value = .offset(, 96).Value
Formulario.I32.Value = FormatNumber(.offset(, 94).Value) * .offset(,
96).Value)
=


Y otro bucle FOR ... NEXT que me borre su contenido sin necesidad de hacerlo
uno a uno con lo siguiente (en un modulo normal)
=Formulario.C1.Value = ClearContents
Formulario.D1.Value = ClearContents
Formulario.PU1.Value = ClearContents
Formulario.I1.Value = ClearContents



Formulario.C32.Value = ClearContents
Formulario.D32.Value = ClearContents
Formulario.PU32.Value = ClearContents
Formulario.I32.Value = ClearContents
=
Espero haberme explicado.

Gracias por su ayuda.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/08/2006 - 04:13 | Informe spam
hola, vm_tapia !

1) una alternativa para el primer for...next [el que llena el contenido de los textboxes segun la posicion/fila]...
lo de -> Formulario. [incluyendo el punto] podria ser 'omitido' SI el codigo es en el mismo modulo del formulario ;)

Dim Col As Byte, TB As Byte
For Col = 1 To 94 Step 3
TB = (Col + 2) / 3
Formulario.Controls("c" & TB) = .Offset(, Col)
Formulario.Controls("d" & TB) = .Offset(, Col + 1)
Formulario.Controls("pu" & TB) = .Offset(, Col + 2)
Formulario.Controls("i" & TB) = FormatNumber(.Offset(, Col) * .Offset(, Col + 2))
Next

2) la rutina para 'limpiar' los textboxes [es practicamente la misma, salvo modificaciones 'menores']...

Dim TB As Byte
For TB = 1 To 32
Formulario.Controls("c" & TB) = ""
Formulario.Controls("d" & TB) = ""
Formulario.Controls("pu" & TB) = ""
Formulario.Controls("i" & TB) = ""
Next

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
Tengo un UserForm con 128 TextBox distribuidas y nombradas de la siguiente manera:
C1, D1, PU1, I1
C2, D2, PU2, I2
C3, D3, PU3, I3

C31, D31, PU31, I31
C32, D32, PU32, I32
1.- tengo que cargar la informacion de una hoja que esta distribuida de la siguiente manera:
A B C D E ... CS
1 Folio Cant. Desc. Precio Cant. ... Importe
2 1234 1 XXXX 10.00 1 ... 100.00 (32 grupos de 3 columnas (cantidad, descripcion, precio) a partir de la B)
... necesito... un bucle FOR .. NEXT en el codigo del UserForm para cargar el contenido de acuerdo a la hoja y su TextBox
asi lo tengo: (omito la rutina para establecer el folio y la posicion dentro de la hoja)
Formulario.C1.Value = .offset(, 1).Value
Formulario.D1.Value = .offset(, 2).Value
Formulario.PU1.Value = FormatNumber(.offset(, 3).Value)
Formulario.I1.Value = FormatNumber(.offset(, 1).Value) * .offset(, 3).Value)
...
Formulario.C32.Value = .offset(, 94).Value
Formulario.D32.Value = .offset(, 95).Value
Formulario.PU32.Value = .offset(, 96).Value
Formulario.I32.Value = FormatNumber(.offset(, 94).Value) * .offset(, 96).Value)
[...]
Y otro bucle FOR ... NEXT que me borre su contenido sin necesidad de hacerlo uno a uno con lo siguiente (en un modulo normal)
Formulario.C1.Value = ClearContents
Formulario.D1.Value = ClearContents
Formulario.PU1.Value = ClearContents
Formulario.I1.Value = ClearContents

Formulario.C32.Value = ClearContents
Formulario.D32.Value = ClearContents
Formulario.PU32.Value = ClearContents
Formulario.I32.Value = ClearContents
Respuesta Responder a este mensaje
#2 vm_tapia
23/08/2006 - 20:56 | Informe spam
Hector Miguel: = ERES MI IDOLO ==
Pitufa a la perfeccion la rutina que me proporcionaste

GRACIAS.



"Héctor Miguel" wrote:

hola, vm_tapia !

1) una alternativa para el primer for...next [el que llena el contenido de los textboxes segun la posicion/fila]...
lo de -> Formulario. [incluyendo el punto] podria ser 'omitido' SI el codigo es en el mismo modulo del formulario ;)

Dim Col As Byte, TB As Byte
For Col = 1 To 94 Step 3
TB = (Col + 2) / 3
Formulario.Controls("c" & TB) = .Offset(, Col)
Formulario.Controls("d" & TB) = .Offset(, Col + 1)
Formulario.Controls("pu" & TB) = .Offset(, Col + 2)
Formulario.Controls("i" & TB) = FormatNumber(.Offset(, Col) * .Offset(, Col + 2))
Next

2) la rutina para 'limpiar' los textboxes [es practicamente la misma, salvo modificaciones 'menores']...

Dim TB As Byte
For TB = 1 To 32
Formulario.Controls("c" & TB) = ""
Formulario.Controls("d" & TB) = ""
Formulario.Controls("pu" & TB) = ""
Formulario.Controls("i" & TB) = ""
Next

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
> Tengo un UserForm con 128 TextBox distribuidas y nombradas de la siguiente manera:
> C1, D1, PU1, I1
> C2, D2, PU2, I2
> C3, D3, PU3, I3
>
> C31, D31, PU31, I31
> C32, D32, PU32, I32
> 1.- tengo que cargar la informacion de una hoja que esta distribuida de la siguiente manera:
> A B C D E ... CS
> 1 Folio Cant. Desc. Precio Cant. ... Importe
> 2 1234 1 XXXX 10.00 1 ... 100.00 (32 grupos de 3 columnas (cantidad, descripcion, precio) a partir de la B)
> ... necesito... un bucle FOR .. NEXT en el codigo del UserForm para cargar el contenido de acuerdo a la hoja y su TextBox
> asi lo tengo: (omito la rutina para establecer el folio y la posicion dentro de la hoja)
> Formulario.C1.Value = .offset(, 1).Value
> Formulario.D1.Value = .offset(, 2).Value
> Formulario.PU1.Value = FormatNumber(.offset(, 3).Value)
> Formulario.I1.Value = FormatNumber(.offset(, 1).Value) * .offset(, 3).Value)
> ...
> Formulario.C32.Value = .offset(, 94).Value
> Formulario.D32.Value = .offset(, 95).Value
> Formulario.PU32.Value = .offset(, 96).Value
> Formulario.I32.Value = FormatNumber(.offset(, 94).Value) * .offset(, 96).Value)
> [...]
> Y otro bucle FOR ... NEXT que me borre su contenido sin necesidad de hacerlo uno a uno con lo siguiente (en un modulo normal)
> Formulario.C1.Value = ClearContents
> Formulario.D1.Value = ClearContents
> Formulario.PU1.Value = ClearContents
> Formulario.I1.Value = ClearContents
>
> Formulario.C32.Value = ClearContents
> Formulario.D32.Value = ClearContents
> Formulario.PU32.Value = ClearContents
> Formulario.I32.Value = ClearContents



Respuesta Responder a este mensaje
#3 Héctor Miguel
24/08/2006 - 02:35 | Informe spam
hola, vm_tapia !

podemos dejarla en -simplemente-... un amigo mas ;)
[esas 'cosas' que mencionas... suelen tener 'pies de barro'] :D

saludos,
hector.
Respuesta Responder a este mensaje
#4 vm_tapia
28/08/2006 - 19:13 | Informe spam
Perdon ¿que significa "pies de barro"?

Dejame aclararte que eso de que eres mi idolo, lo digo con todo respeto
hacia tu
persona. y si alguien piensa mal al respecto, ese es problema de quien lo
piense.
no mio, ni [eso espero] de Hector Miguel).



"Héctor Miguel" wrote:

hola, vm_tapia !

podemos dejarla en -simplemente-... un amigo mas ;)
[esas 'cosas' que mencionas... suelen tener 'pies de barro'] :D

saludos,
hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida