Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Síntomas
Imagine la siguiente situación:
- Está trabajando en Excel para Microsoft 365, Excel 2016 o una versión posterior.
- Una hoja de cálculo contiene muchos controles ActiveX que se establecen para que sean invisibles.
- Tiene código VBA que escribe muchas fórmulas en las celdas.
En este escenario, Excel escribe en las celdas muy lentamente al ejecutar el código VBA.
Ejemplo
En una hoja de cálculo Excel 2016, cree 105 controles ActiveX como botones de opción.
Establezca la propiedad Visible de los botones de opción en False.
Ejecute el siguiente código VBA:
For row = 1 To 20000 For col = 1 To 5 Cells(row, col).Formula = "=Func()" Next Next
Observe que este código se ejecuta mucho más lento que en versiones anteriores de Excel.
Causa
Este problema se produce debido a un cambio de diseño en Excel. Debido a este cambio, el siguiente comportamiento se produce cuando el código VBA escribe una fórmula en una celda:
- Excel hace visibles los controles ActiveX invisibles.
- El código VBA escribe una fórmula en una celda.
- Excel vuelve a invisibles los controles ActiveX.
Solución alternativa
Para resolver este problema, use uno de los métodos siguientes:
- Revise el código y la arquitectura y vuelva a evaluar si necesita tantos controles ActiveX como tenga.
- Reemplace los controles ActiveX por controles de formulario en los libros afectados.
- Haga visibles temporalmente los controles ActiveX cuando se ejecute el código.
Nota:
Si hay muchos objetos Shape en la hoja de cálculo, el código VBA puede seguir ejecutándose lentamente después de usar las soluciones alternativas. En esta situación, quite los objetos Shape.
Estado
Microsoft ha confirmado que se trata de un problema en los productos que aparecen en la sección "Se aplica a".