Boqueo de celdas al cargar userform con animación

Hice un userform con animación tipo matrix en excel de bienvenida, este funciona muy bien, sin embargo cuando finaliza y me habré el área de trabajo no puedo escribir ni hacer nada, tengo que entrar al diseño e interrumpir la macro, me pueden ayudar a resolver esto.

Anexo código.

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub UserForm_Activate()

Application.OnTime Now + TimeValue("00:00:15"), "Quitform"

Dim cCntrl As Control, u, x As Double
For x = 1 To 500
Set cCntrl = Me.Controls.Add("Forms.label.1", , True)
With cCntrl
.Font.Bold = True
.BorderStyle = fmBorderStyleNone
.SpecialEffect = fmSpecialEffectFlat
.ForeColor = &H9000&
.BackColor = vbBlack
.Width = 7
.Height = 100
.Top = Application.WorksheetFunction.RandBetween(0, Me.Height)
.Left = Application.WorksheetFunction.RandBetween(0, Me.Width)
End With
Next
Call nieve

End Sub

Sub nieve()

Dim cCntrl As Control, u, x As Double, srt, letra As String

'srt = "abcdefghijklmnopqrstuvwxyz" '26
'srt = "012345678909876543210" '20
'srt = "12345PROSA6789009PROSA8765PROSA43210" '20
srt = "!#$6%&/A()9=?¡¨*[B]_2:;¬\@5!#Z$%2&/?=1R)[]:;W_" '35
o:
For Each cCntrl In Me.Controls
Sleep 1 / 5
DoEvents
letra = Right(UCase(srt), Application.WorksheetFunction.RandBetween(1, 35))
cCntrl.Caption = letra
cCntrl.Top = cCntrl.Top + 10
On Error Resume Next
If cCntrl.Top > Me.Height Then cCntrl.Top = 0
Next
GoTo o

End Sub

1 respuesta

Respuesta
1

[Hola

Podría ser un dilema dado por la conocida inestabilidad del OnTime, pero es complicado sin ver el archivo. Colócalo en algún "Drive" y comparte por aquí el enlace. Si consideras que hay datos privados, basta con eliminarlos, lo importante es ver tus macros.

Hola Abraham Valencia, el método On Time que puse solo es para que el formulario dure unos segundos, ya le he quitado esa instrucción y sigue inhabilitando las celdas de las demás hoja.

copia el código que compartí en un libro nuevo y corre la macro, funciona sin problemas y cuando termine el ciclo trata de escribir en alguna celda y veras que no se puede hasta que interrumpas la macro.

sigo al pendiente

[Hola nuevamente

Ah, ya me percaté, aparentemente cierras el Userform sin que la macro "nieve" se haya detenido y/o acabado su proceso por lo que queda en memoria y no te deja trabajar en la hoja. En las propiedades del USerform, cambiar ShowModal a False y listo.

Hola de de nuevo Abraham Valencia, así funciona gracias pero excel ya no habré y se queda pensando, te envió pantallazo

[Hola otra vez

Supongo que se sigue quedando en memoria la macro "nieve", pero sin ver el archivo es seguir intuyendo/suponiendo. 

Quizá una variable boleana en la macro "nieve" con un IF sirva para detenerla, pero insisto, sin el archivo es seguir adivinando prácticamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas