problema con formulario con el editor de visual basic

11/07/2004 - 01:40 por jose | Informe spam
Holas, para empezar quiero decir que el programa que intento generar lo hago
desde el editor de visual basic que hay en excel, es decir intento hacer una
macro.

Bueno el problema es que he puesto una progressbar que funciona, pero
resulta que quiero poner una label cuando se le de a un boton, pero esta
label no se ve y no se porque. Dentro del evento click del raton hay dos do
while extensos puede que sea eso, no se. Aqui el codigo, donde pongo
comentarios que os terminaran de aclarar mi problema


Private Sub boton1_Click()

'este procedimiento es el que compara las dos columnas

Label1.Visible = True 'esta label no esta visible hasta que acaba el 2º
loop¿porque? yo quiero que se vea desde el principio
Dim A, C As Currency, porcentaje As Integer
A = 1
Do While ActiveSheet.Cells(A, 1).Value <> "" 'columna A
C = 1
Do While ActiveSheet.Cells(C, 3).Value <> "" 'columna C

'hacemos un casting (CDbl) por si el campo no es del tipo double

If (CDbl(ActiveSheet.Cells(A, 1).Value) = CDbl(ActiveSheet.Cells(C,
3).Value)) And ActiveSheet.Cells(C, 3).Font.Color <> RGB(255, 0, 0) Then
ActiveSheet.Cells(A, 1).Font.Color = RGB(255, 0, 0)
ActiveSheet.Cells(C, 3).Font.Color = RGB(255, 0, 0)
Exit Do
End If
C = C + 1
Loop
'cuando llega aqui se muestra la label, pero hasta este momento no se
ve.
A = A + 1
ProgressBar1.Value = ProgressBar1.Value + 1 'muestra la barra de progreso
Loop
MsgBox "operación realizada con éxito", vbInformation + vbOKOnly,
"finalizada busqueda"
End 'una vez terminada la operacion se sale del programa
End Sub
 

Leer las respuestas

#1 Héctor Miguel
13/07/2004 - 05:46 | Informe spam
hola, jose !

... he puesto una progressbar que funciona
... quiero poner una label cuando se le de a un boton pero esta label no se ve y no se porque [...]
Private Sub boton1_Click()
Label1.Visible = True 'esta label no esta visible hasta que acaba el 2º loop ... quiero que se vea desde el principio [...]



[sucede que] necesitas 'darle un respiro' al formulario para que se vuelva a 'dibujar' [en pantalla]
=>antes<= de que 'entre' a procesos mas 'tardados' [como los loops que mencionas] ;)

o... 'dejas visible' el control label [desde el mismo diseño del formulario]
o... le das el respiro al formulario para que se re-dibuje'
Label1.Visible = True
Application.Wait Now + TimeValue("0:00:01")
Do While .
o... 'forzas' al formulario para que se re-dibuje [creo que es la 'mejor'] ;)
Label1.Visible = True
Me.Repaint
Do While .

saludos,
hector.

Preguntas similares