Problema con arreglo y LABELs

02/02/2006 - 18:20 por JLMorales | Informe spam
¿Como puedo hacer que se habiliten y cambien de valor labels definidos en un
formulario?

Son varios y solo quiero que se habiliten segun criterio (no todos), pero no
puedo resolver este problema. Recibo un mensaje de error que dice:
<<Error de compilación: No se encontro el método o el dato miembro.>>

nLabel = Array("Label4", "Label5", "Label6", "Label7", "Label8", "Label9",
"Label10", "Label11", "Label12", "Label13", "Label14", "Label15", "Label16",
"Label17", "Label18", "Label19", "Label20")
For i = 1 To nLabel
UserForm3.nLabel(i).Visible = True
UserForm3.nLabel(i).Caption = Range("E" & CStr(nFila))
i = i + 1
UserForm3.nLabel(i).Visible = True
UserForm3.nLabel(i).Caption = Range("I" & CStr(nFila))
Next i

Cada label tomará un valor determinado, segun la fila (nFila) de una
validación determinada.

Gracias
 

Leer las respuestas

#1 Héctor Miguel
03/02/2006 - 06:13 | Informe spam
hola, JLMorales !

Como puedo hacer que se habiliten y cambien de valor labels definidos en un formulario?
Son varios y solo quiero que se habiliten segun criterio (no todos), pero no puedo resolver este problema.
Recibo un mensaje de error que dice:<<Error de compilacion: No se encontro el metodo o el dato miembro.>>
nLabel = Array("Label4", "Label5", "Label6", "Label7", "Label8", "Label9",
"Label10", "Label11", "Label12", "Label13", "Label14", "Label15", "Label16",
"Label17", "Label18", "Label19", "Label20")
For i = 1 To nLabel
UserForm3.nLabel(i).Visible = True
UserForm3.nLabel(i).Caption = Range("E" & CStr(nFila))
i = i + 1
UserForm3.nLabel(i).Visible = True
UserForm3.nLabel(i).Caption = Range("I" & CStr(nFila))
Next i
Cada label tomara un valor determinado, segun la fila (nFila) de una validacion determinada.



1) NO puedes conocer el numero de elementos en una matriz de tipo 'variant' [nLabels] que has llenado con una funcion Array(...)
2) los elementos en una matriz de tipo 'variant'... SE CUENTAN desde 0 hasta n_elementos MENOS UNO
[a menos que en el area de declaraciones del modulo pongas la instruccion: -> Option Base 1
3) el codigo 'trata' de leer: -> For i = 1 To nLabes :-(( [aparte de que estas 'omitiendo el primero'... EL # CERO]... <\°|°/>
4) no entiendo 'que sentido' tenga el incrementar uno a la variable 'i' -> a mitad del ciclo For...Next -?-
al repetirse el siguiente ciclo... el control que se hubiera modificado 'en avanzada' [i = i + 1]... sufrira los efectos del bucle 'inicial' :))
5) tampoco se esta 'avanzando' la variable 'nFila' [al menos... en la parte de codigo que expones] -?-
por lo cual... TODOS los controles 'modificables'... estarian tomando un 'Caption'... IGUAL PARA TODOS -?-

-> para 'avanzar' por los elementos de tu matriz 'nLabels'... utiliza una 'estructura' en el codigo +/- como la siguiente:
[ ... otras lineas de tu codigo ... ]
Dim nLabel, Sig As Byte
nLabel = Array("Label4", "Label5", "Label6", "Label7", "Label8", "Label9", _
"Label10", "Label11", "Label12", "Label13", "Label14", "Label15", "Label16", _
"Label17", "Label18", "Label19", "Label20")
For Sig = LBound(nLabel) To UBound(nLabel)
With UserForm3.Controls(nLabel(Sig))
.Visible = True
.Caption = Range("e" & nFila)
End With
Next
[ ... otras lineas de tu codigo .. ]

lo que me sigue 'haciendo mosca'... es el 'avance intermedio'... y el 'avance' [que NO 'se ve'] de los caption 'distintos' -?-

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

Preguntas similares