Excel - Como crear variable global

 
Vista:

Como crear variable global

Publicado por aspaldi (3 intervenciones) el 10/01/2022 17:47:21
Hola, en las macros que tengo para que no me parpadee al ejecutarlas le tengo puesto al principio Application.ScreenUpdating=false
y al final Application.ScreenUpdating=true
Mi problema es que la primera vez que ejecutó la macro no parpadea, pero las siguientes si sigue parpadeando.
Las macros están hechas con grabadora.
Creo que el problema está que tengo macros de evento en todas las hojas con Application.ScreenUpdating=true
Para poder resaltar las filas completas de color al seleccionarlas.
Pienso, después de leer e informarme que respecto al tema del Application.ScreenUpdating, al tener macros de evento en cada hoja que se ejecutan al lanzar la rutina, está claro que cuando lleguan al True, se va a activar la visualización. Creo que una forma de evitar esto, es definir una variable global que identifique si he lanzado la rutina principal. Si le pongo True al inicio y en false al final de la misma. Si las Application.ScreenUpdating =True de los eventos de hoja, antes de ejecutarse, chequean el estado de dicha variable global y solo se ejecutan si esta es false, evitarás este problema.
Soy algo nuevo en esto, alguien podría explicarme cómo se crean las rutinas globales, adjunto el documento.
Gracias.
https://www.dropbox.com/scl/fi/tfze1yfpi7pl7k7d1fgvt/CON-PARPADEO.xlsm?dl=0&rlkey=58ayafhfx8x3cshiacnqjjuep
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como crear variable global

Publicado por Antoni Masana (2485 intervenciones) el 10/01/2022 18:58:54
Tomo como ejemplo estas dos macros del modulo 11.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Borrarherencia()
'
' Borrarherencia Macro
'
 
'
    Range("A2:N2").Select
    Selection.ClearContents
    Range("A6").Select
End Sub
 
Sub Borraracciones()
'
' Borraracciones Macro
'
 
'
    Range("A2:R2").Select
    Selection.ClearContents
    Range("A6").Select
End Sub

Te pongo en negrita lo que debes poner al inicio y al final de cada macro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Borrarherencia()
'
' Borrarherencia Macro
'
 
'
    Application.ScreenUpdating=false
    Sheets("{Nombre de la hoja donde se tiene que ejecutar la macro}").Select
    Range("A2:N2").Select
    Selection.ClearContents
    Range("A6").Select
    Application.ScreenUpdating=True
End Sub
 
Sub Borraracciones()
'
' Borraracciones Macro
'
 
'
    Application.ScreenUpdating=false
    Sheets("{Nombre de la hoja donde se tiene que ejecutar la macro}").Select
    Range("A2:R2").Select
    Selection.ClearContents
    Range("A6").Select
    Application.ScreenUpdating=True
End Sub

Las macros que se puedan ejecutar en más de una hoja no se debe poner Sheets().Select, solo las macros que estén pensadas para UNA determinada hoja.

Ejemplo:

1
Sheets("DIVIDENDOS HERENCIA").Select


Quita todos los:

1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = True
End Sub

No son necesarios.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como crear variable global

Publicado por aspaldi (3 intervenciones) el 10/01/2022 21:24:53
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar