Variable que cambie de nombre

29/06/2007 - 04:25 por luis | Informe spam
Hola amigos:

Tengo problemas en lograr con una misma variable la macro le pueda asignar
un nombre diferente en cada pasada.

Al inicio se obtiene el valor de la primera fila ocupada y luego el de la
última fila con datos (la diferencia entre esos valores son la cantidad de
variables que se necesitan para asignarles un valor). Enseguida se pasa a
valores dicha información y empieza un ciclo para intentar que la variable
pase a llamarse cvar1, cvar2, cvar3, etc. hasta llegar al número de la
última fila y que tome cada variable tome el valor de una celda . Este es el
paso que no puedo realizar. Paso el código, para ver si me puedo explicar
mejor:

pfil = Range("D6").Offset(0, 0).Address(RowAbsolute:=False,
ColumnAbsolute:=False)
ufil = ActiveCell.End(xlDown).Offset(0, 0).Address(RowAbsolute:=False,
ColumnAbsolute:=False)
cpfil = Val(Range(pfil).Row)
cufil = Val(Range(ufil).Row)

Do While cpfil <= cufil
cpfil = cpfil + 1
cvar & cpfil - 5 = Range("D" & cfil).Value
Loop
'(como la primera fila siempre es la 6 se le resta 5 para intentar empezar
desde cvar1)

Muchas gracias de antemano.
Luis
 

Leer las respuestas

#1 Héctor Miguel
29/06/2007 - 07:41 | Informe spam
hola, luis !

Tengo problemas en lograr con una misma variable la macro le pueda asignar un nombre diferente en cada pasada.
Al inicio se obtiene el valor de la primera fila ocupada y luego el de la ultima fila con datos
(la diferencia entre esos valores son la cantidad de variables que se necesitan para asignarles un valor).
Enseguida se pasa a valores dicha informacion y empieza un ciclo
para intentar que la variable pase a llamarse cvar1, cvar2, cvar3, etc. hasta llegar al número de la ultima fila
y que tome cada variable tome el valor de una celda...



1) [hasta donde se]... los nombres de las variables NO se pueden crear/modificar/... *al vuelo*...
una vez iniciada la ejecucion del codigo, o usas las declaradas, o dejas *inventadas* algunas en medio del codigo
[depende de si al inicio de tus modulos usas la declaracion *Option Expicit* y/o tus *costumbres* de programacion] -?-

2) creo que lo que necesitas son variables *de matriz* donde puedes *rellenar* sus elementos con la informacion requerida

3) si expones/comentas/.. [+/- exactamente] que pretendes hacer con el contenido de las celdas de 'ese' rango...
[probablemente] se podria sugerir alguna alternativa para trabajar con sus contenidos -?-

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

___ el codigo expuesto __
Este es el paso que no puedo realizar. Paso el codigo, para ver si me puedo explicar mejor:
pfil = Range("D6").Offset(0, 0).Address(RowAbsolute:=False, ColumnAbsolute:=False)
ufil = ActiveCell.End(xlDown).Offset(0, 0).Address(RowAbsolute:=False, ColumnAbsolute:=False)
cpfil = Val(Range(pfil).Row)
cufil = Val(Range(ufil).Row)
Do While cpfil <= cufil
cpfil = cpfil + 1
cvar & cpfil - 5 = Range("D" & cfil).Value
Loop
'(como la primera fila siempre es la 6 se le resta 5 para intentar empezar desde cvar1)

Preguntas similares