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.
 

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

Preguntas similares