Evitar Repetición de formulario

Hola, resulta que tengo un formulario que aparece al activar una hoja de excel, y tiene un botón de comando el cual realiza unas tareas. Pero tengo el problema que al pinchar en el comando, este activa en una linea del código la propia hoja y me vuelve activar el formulario.
He intentado ponerle una variable, para envitarlo pero no lo consigo.
Te adjunto el código escrito.
Private Sub Worksheet_Activate()
If PASO = 0 Then
UserForm1.Show
End If
End Sub
Private Sub CommandButton1_Click()
PASO = 1
Valor = ListBox1.Value
Valor = Mid(Valor, InStr(1, Valor, "PAG."), 8)
Sheets("MAPAS").Select: ActiveSheet.Shapes(Valor).Select: Selection.Cut
Unload UserForm1
Sheets("EVALUCION GRAFICA").Select
Range("B5").Select: ActiveSheet.Paste
end sub
Gracias, de antemano JRM.

1 respuesta

Respuesta
1
Prueba con esta versión de tu código:
Private Sub CommandButton1_Click()
UserForm1.Hide
PASO = 1
Valor = ListBox1.Value
Valor = Mid(Valor, InStr(1, Valor, "PAG."), 8)
Sheets("MAPAS").Select: ActiveSheet.Shapes(Valor).Select: Selection.Cut
Sheets("EVALUCION GRAFICA").Select
Range("B5"). Select: ActiveSheet. Paste
Unload UserForm1
end sub
Conceptualmente debería funcionar aunque no tengo posibilidad de testearlo en mi máquina.
Pruébalo y dime si resolvió el punto.
Un abrazo!
Fernando
El problema persiste. Se me activa la hoja cuando intento pegar el gráfico en otra hoja.
Te adjunto el código escrito:
MsgBox ("Ahora, el gráfico vuelve a su sitio")
Sheets("EVOLUCION GRAFICA").Select: Range("B3").Select
Worksheets("EVOLUCION GRAFICA").Shapes(Alto).Cut
Sheets("MAPAS").Paste
'Ahora se me activa el formulario
Sheets("MAPAS").Shapes(Alto).Left = Izquierda: Sheets("MAPAS").Shapes(Alto).Top = Superior
Unload UserForm1
P.D. ¿La solución de la variable es factible?
Gracias, JRM
Dice qué se te activa la hoja (?) Cuando intentas pegar ...
Supongo que será el formulario.
La verdad es que, insisto, no puedo probar si mi sugerencias son válidas porque no tengo idea de lo que hace tu macro en suma.
HAsta ahora solo me muestras fragmentos de ella. No sé cuando carga el formulario, qué otras cosas hace, etc.
Lo que intentaría es colocar después de la instrucción del MsgBox, la siguiente:
Application.Screenupdating = False
Y setarlo al final de la macro a "True"
Espero que funcione...
Que tengas un gran fin de semana.
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas