Ler en inglés

Compartir por


El código VBA escribe en las celdas lentamente cuando muchos controles ActiveX son invisibles en Excel 2016

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

  1. En una hoja de cálculo Excel 2016, cree 105 controles ActiveX como botones de opción.

  2. Establezca la propiedad Visible de los botones de opción en False.

  3. Ejecute el siguiente código VBA:

    VB
    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".