Les på engelsk

Del via


VBA-kode skriver sakte til celler når mange ActiveX-kontroller er usynlige i Excel 2016

Symptomer

Vurder følgende scenario:

  • Du arbeider i Excel for Microsoft 365, Excel 2016 eller en senere versjon.
  • Et regneark inneholder mange ActiveX-kontroller som er satt til å være usynlige.
  • Du har VBA-kode som skriver mange formler til celler.

I dette scenarioet skriver Excel til cellene svært sakte når du kjører VBA-koden.

Eksempel

  1. Opprett 105 ActiveX-kontroller som alternativknapper i et Excel 2016 regneark.

  2. Angi Synlig-egenskapen for alternativknappene til Usann.

  3. Kjør følgende VBA-kode:

    VB
    For row = 1 To 20000
    
        For col = 1 To 5
           Cells(row, col).Formula = "=Func()"
        Next
    Next
    

Du legger merke til at denne koden kjører mye langsommere enn den gjør i tidligere versjoner av Excel.

Årsak

Dette problemet oppstår på grunn av en utformingsendring i Excel. På grunn av denne endringen oppstår følgende virkemåte når VBA-kode skriver en formel til en celle:

  • Excel gjør usynlige ActiveX-kontroller synlige.
  • VBA-koden skriver en formel til en celle.
  • ActiveX-kontrollene blir usynlige igjen i Excel.

Løsning

Følg en av disse fremgangsmåtene for å omgå dette problemet:

  • Se gjennom koden og arkitekturen, og revurdere om du trenger så mange ActiveX-kontroller som du har.
  • Erstatt ActiveX-kontrollene med skjemakontroller i berørte arbeidsbøker.
  • Gjør ActiveX-kontrollene synlige midlertidig når koden kjøres.

Obs!

Hvis det er mange figurobjekter i regnearket, kan VBA-koden fortsatt kjøre sakte etter at du har brukt løsningene. Fjern figurobjektene i denne situasjonen.

Status

Microsoft har bekreftet at dette er et problem i produktene som er oppført i delen Gjelder for.