Excel - Application.ScreenUpdating = False NO FUNCIONA

 
Vista:
sin imagen de perfil
Val: 7
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por GUS (4 intervenciones) el 30/07/2018 11:47:32
Hola a todos,
soy un neófito en todo lo que es el mundo de las macros. He logrado hacer una pagina que me funciona muy bien pero me gustaría quitar un parpadeo al ejecutar la macro guardar....
He probado poniendo Application.ScreenUpdating = False al principio y true al final, pero no funciona.
me podríais ayudar por favor. gracias de antemano
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: 3.891
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Antoni Masana (1334 intervenciones) el 30/07/2018 12:26:07
Consulta esta página.

https://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros-excel/

Y si no te sale tendrías que subir el libro, si puedes y la macro.
Prueba primero a publicar la macro.
Haber si se ve el fallo y si no se ve tendrias que subir el libro para poder probar la macro y ver donde esta el problema.


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
Imágen de perfil de Antoni
Val: 3.891
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Antoni (1334 intervenciones) el 30/07/2018 12:35:27
Gracias de antemano antoni, me he vuelto loco con esto.....


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
Sub GUARDAR()
'
' GUARDAR Macro
'
 
'
    Application.ScreenUpdating = False
    Sheets("DATOS").Select
    Rows("9:9").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Sheets("REGISTRO").Select
    Range("D7,D9,D11,D13,D15,D17,D19,D21,D23,D25,D27").Select
    Range("D27").Activate
    Selection.Copy
    Sheets("DATOS").Select
    Application.WindowState = xlMaximized
    Range("A9:K9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Application.WindowState = xlNormal
    Application.WindowState = xlMaximized
    Application.WindowState = xlNormal
    Application.WindowState = xlMaximized
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Application.WindowState = xlNormal
    Application.WindowState = xlMaximized
    Application.Run "'BASE DE DATOS ENYGAS.xlsm'!convmays"
    Application.WindowState = xlNormal
    Sheets("REGISTRO").Select
    Range("D7").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D9").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D11").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D13").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D15").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D17").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D19").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D21").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D23").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D25").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D7").Select
    ActiveWorkbook.Save
    Application.ScreenUpdating = True
 
End Sub
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
Imágen de perfil de Antoni Masana
Val: 3.891
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Antoni Masana (1334 intervenciones) el 30/07/2018 19:58:10
No veo nada que pueda estar mal para que se vea el parpadeo.

Si que veo código que sobra o que no tiene sentido o se repite. Me imagino que esta macro esta realizada con la maravillosa técnica de GRABAR MACRO, así es como se aprende.
Para programar macros necesitas conocimientos básicos de programación de Visual Basic y la legendaria técnica de GRABAR MACROS.

Haces una acción grabando la macro y después miras que ha realizado y así vas aprendiendo, y por último siempre puedes hechar mano del chuletario GOOGLE.

Te comento lo que creo que hace cada grupo de instrucciones
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
Sub GUARDAR()
    Application.ScreenUpdating = False
 
    ' ---&---  Insertas una fila por encima de la fila 9 en la hoja DATOS
 
    Sheets("DATOS").Select
    Rows("9:9").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
 
    ' ---&---  Seleccionas la hoja REGISTROS, seleccionas la celda D27 y copias contenido
 
    Sheets("REGISTRO").Select
    Range("D7,D9,D11,D13,D15,D17,D19,D21,D23,D25,D27").Select   ' --- Esta línea sobra
    Range("D27").Activate
    Selection.Copy
 
    ' ---&---  Seleccionas la hoja DATOS y las celdas de la fila 9 de la A a la K
 
    Sheets("DATOS").Select
    Application.WindowState = xlMaximized   ' ---- Esto no tiene sentido
    Range("A9:K9").Select
 
    ' ---&---  Pagas el valor copiado
 
    Selection.PasteSpecial _
              Paste:=xlPasteValues, _
              Operation:=xlNone, _
              SkipBlanks:=False, _
              Transpose:=True
 
    ' ---&---  Esto no tiene sentido es repetitivo y no ayuda
 
    Application.WindowState = xlNormal
    Application.WindowState = xlMaximized
    Application.WindowState = xlNormal
    Application.WindowState = xlMaximized
 
    ' ---&---  Vacia el buffer de la copia
 
    Application.CutCopyMode = False
 
    ' ---&---  Pone bordes al area selecionada
 
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
 
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
 
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
 
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
 
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
 
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
 
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
 
    ' ---&---  Parece que se repite
 
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
 
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
 
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
 
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
 
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
 
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
 
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
 
    ' ---&---  Sigue sin tener sentido
 
    Application.WindowState = xlNormal
    Application.WindowState = xlMaximized
 
    ' ---&---  Ejecutas una macro de un libro que podría no ser este
 
    Application.Run "'BASE DE DATOS ENYGAS.xlsm'!convmays"
 
    ' ---&---  Sigue sin tener sentido
 
    Application.WindowState = xlNormal
 
    ' ---&---  Borras el contenido de unas celdas de la hoja REGISTRO
 
    Sheets("REGISTRO").Select
    Range("D7").Select:   ActiveCell.FormulaR1C1 = ""
    Range("D9").Select:   ActiveCell.FormulaR1C1 = ""
    Range("D11").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D13").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D15").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D17").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D19").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D21").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D23").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D25").Select:  ActiveCell.FormulaR1C1 = ""
    Range("D7").Select
 
    ' ---&--- Finalmente Salvas el Libro
 
    ActiveWorkbook.Save
    Application.ScreenUpdating = True
End Sub

Si mis comentarios te sirven y te funciona satisfactoriamente lo damos por solucionado, en caso contrario tendrías que enviar el libro es este foro o a mi correo.

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
sin imagen de perfil
Val: 7
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Gus (4 intervenciones) el 31/07/2018 10:11:33
Hola Antoni y perdona las molestias.
Te envio el libro para que veas los errores y haber si me puede echar una cable. En realidad solo hay dos cosas que no me salgo, una quitar el parpadeo al guardar y la otra en la hoja registro hice un buscador que va bien, pero cuando guardo los datos con un hipervinculo ejemplo en calendario o datos al hacer la busqueda de ese cliente los hipervinculos no funcionan. Seria interesante al crear una nueva entrada poner un hipervinculo y después de guardar que pudiese buscar en el buscador y que funcionasen los hipervinculos..

Como ves lo de neófito me queda corto jajaja llevo unas 5 semanas y no me salgo
He ido cogiendo tutoriales y siguiéndolos al pie de la letra, pero me queda grande .

Te agradezco tu paciencia y comprensión Antoni,
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
Imágen de perfil de Antoni Masana
Val: 3.891
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Antoni Masana (1334 intervenciones) el 31/07/2018 18:22:38
Te adjunto el libro con la macro corregida.

Todas las líneas de código con esta instrucción las he quitado porque son las causantes del molesto parpadeo y no tienen ninguna finalidad practica:
1
Application.WindowState = ...

De la línea 42 a la 90 sobra, porque pones unos bordes y después los rectificas de la 91 a la 129.

Esta linea ejecuta una rutina que pone celdas B8:I9 B9:I9 a mayúsculas

1
2
3
    ' ---&---  Ejecutas una macro de un libro que podría no ser este
 
Application.Run "'BASE DE DATOS ENYGAS.xlsm'!convmays"

Y se simplifica asi:

1
call convmays

Si esta macro no se tiene que usar por el usuario, la opcion para ocultarla es ponerla en el mismo modulo que las macros que la llaman y definirla como Privada, es decir:
1
2
3
4
5
6
7
Private Sub convmays()
    Set rgColA = Range("B9:I9")
    Dim rg As Range
    For Each rg In rgColA.Cells
        rg.Value = UCase(rg.Text)
    Next
End Sub


Y ahora los Hipervínculos.

No acabo de entender la explicación de esta parte del problema, entiendo que tenes unas celdas definidas con formato de hipervínculo pero no funciona.

Estos campos son EMAIL, CALENDARIO y DATOS.

El primero y el ultimo creo que funcionan porque abre el explorador, el Calendario no se que debería hacer.

Ya me contaras.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Gus (4 intervenciones) el 02/08/2018 00:01:33
Antoni... no tengo palabras!!! gracias de corazón .

la parte que no me explique bien, es que debajo de la casilla de la base de datos hice un buscador (hoja registro) y cuando busco un cliente guardado en la base de datos me sale, pero no con el hipervinculo que hago tanto en la casilla calen como en calendario.
He probado hacer el hipervinculo tanto a la hora de crear el cliente en la base de datos -como debería ser pero me pareció complicado- o desde la hoja datos mas molesto pero creí que funcionaria. Me equivoque una vez mas.... estoy clavado en ese punto.

son necesarios ya que uno va a una carpeta concreta del pc datos del cliente y el otro va hacia el calendario de google. fecha de visitas...

Resumiendo ¿ Seria posible poder hacer hipervinculos en esos dos campos, calendario ,datos y una vez creados y guardados se pudiera buscar un cliente en el buscador y funcionasen esos dos hipervinculos?
o es pedir demasiado y no se puede hacer todo eso en una misma macro?

Ahora me doy cuenta del primer error, fue mio y el motivo es hacer las cosas en diferentes días los demas... me queda muy grande todavía esto de la programación.

Antoni , soy asesor energético, si te puedo echar un cable en algo no dudes en pedirme ayuda.

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
Imágen de perfil de Antoni Masana
Val: 3.891
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Antoni Masana (1334 intervenciones) el 02/08/2018 07:02:16
No acabo de entender la explicación de los hipervínculos pero hagamos una cosa haber si el problema viene por aquí:

Celdas H30, H36:H53, J30:K30, J36:K53 defínelas con Estilo Hipervínculo con esta MACRO

1
2
3
4
5
Sub Macro1()
    Range("H30,H36:H53,J30:K30,J36:K53").Select
    Range("J36").Activate
    Selection.Style = "Hyperlink"
End Sub

Y si no me equivoco problema resuelto.

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
sin imagen de perfil
Val: 7
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Gus (4 intervenciones) el 06/08/2018 10:01:58
Hola Antoni
Me he fijado este fin de semana que el libro que me enviaste ya modificado la macro de búsqueda no funciona aunque no anexe la ultima que me enviaste de los hipervinculos . Me sale una pantallita que dice:
no se puede ejecutar la macro*******puede que la macro no este disponible en este libro o se hayan desabilitado todas las macros

Tendrá algo que ver que exel es de 2007
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
Imágen de perfil de Antoni Masana
Val: 3.891
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Antoni Masana (1334 intervenciones) el 07/08/2018 10:41:42
Te pido disculpas, no se hice que el botón a perdido la referencia de la macro, vuelve a asignar la macro al botón y ya esta solucionado.

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

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Javier Garcia (2 intervenciones) el 07/06/2019 13:34:05
Estimado Antoni:

Soy novato en esta Web y no sé como ponerme en contacto contigo a través de dicha webb.

Me pareces un tio genial y muy competente, por las explicaciones que he visto tuyas en distintas consultas que he realizado.

Tambien soy muy novato en excel y he querido empezar un poco con este tema de manera totalmente autodidacta.

Tengo un libro con 4 hojas y varias macros donde he querido copiar informacion entre ellas. Más o menos funcionan pero cuando actualizo las macros son un desastre y sobre todo no me funciona application.screenUpdating, me gustaria me asesoraras por lo que te estaria muy agradecido.

atentamente en espera de tus noticias. Un saludo. Javier Garcia
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
Imágen de perfil de Antoni Masana
Val: 3.891
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Antoni Masana (1334 intervenciones) el 07/06/2019 15:18:12
Puedes enviarme tu libro por este foro o a mi correo que veras en la cabecera.

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

Application.ScreenUpdating = False NO FUNCIONA

Publicado por Javier Garcia (2 intervenciones) el 14/06/2019 21:42:44
Buenas Tardes Amigo Antoni:

Muchas gracias por todo, las macros funcionan a la perfección y tan solo me queda la duda de que el parpadeo de pantalla continua.
Ya no sé si el problema lo tengo yo en el ordenador. pero por lo demas muy bien. Muchas Gracias y un saludo
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